CydiaSubstrate Hook
CydiaSubstrate,iOS7越狱之前名为 MobileSubstrate(简称为MS或MS框架),作者为大名鼎鼎的Jay Freeman(saurik)。
MobileSubstrate
这个工具是control
的默认依赖库,包含了MobileHooker
,MobileLoader
,Safe mode
.MobileHooker
对 C OC 均有效.包含了MSHookMessageEx
,MSHookFunction
两个函数,其中MSHookMessageEx
是对OC函数,实际采用的是runtime机制.MSHookFunction
针对C/C++函数,对于C函数是在函数的开头修改了汇编指令,使其跳转到新的实现,执行完成后再返回执行原指令.
MSHookMessageEx
1 | void MSHookMessageEx(Class _class, SEL message, IMP hook, IMP *old); |
_class需要hook的oc函数的类名;message 需要hook的oc的函数sel;hook新的hook函数的具体实现的imp;*old旧的函数的地址,官方示例:
1 | NSString *(*oldDescription)(id self, SEL _cmd); |