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); |