【发布时间】:2012-05-07 01:48:02
【问题描述】:
我想在 iOS 5 中挂钩 MPIncomingPhoneCallController 类的方法,以便在来电时执行某些操作。我用
Class _$MPIncomingPhoneCallController = objc_getClass("MPIncomingPhoneCallController");
MSHookMessage(_$MPIncomingPhoneCallController,
@selector(updateLCDWithName:label:breakPoint:),
(IMP) &Hook_LCD,
"pre_");
钩updateLCDWithName:label:breakPoint:,但失败了。
我该怎么做?
【问题讨论】:
-
你不钩类。你挂钩方法或函数。我建议你谷歌一下,寻找关于如何使用 MobileSubstrate 的教程,但首先要了解更多关于编程的基础知识。 PS:这里你必须使用 objc_getMetaClass()
-
@YllierDev 是的,你是对的,我挂钩函数。但首先我必须得到类。 objc_getMetaClass() 用于挂钩类方法,而 objc_getClass 用于挂钩其他方法。
-
objc_getClass 用于实例方法。很抱歉造成混淆,我不知道我怎么认为你想挂钩一个类方法。无论如何,我假设您正在尝试在将您的调整注入 SpringBoard 时挂钩那个。你必须知道这个类在 SpringBoard 的一个插件中,它加载得很晚。因此,您只能在加载该插件后才挂钩它。
-
@YllierDev 因为加载较晚所以我得到零? link Vertex 在那里提到了 iEnhancer,我用谷歌搜索但发现很少有用的信息。你能给我一些指导吗?谢谢。
-
我很抱歉,但也许 nil 不是原因。我测试其他人,他们也为零,但方法被迷住了。我会测试更多,对此感到抱歉。
标签: iphone ios5 jailbreak iphone-privateapi