非越狱环境:
- OC的runtime特性,来动态替换修改oc类的方法,但仅能针对OC语言
- fishhook facebook开发的可hook C函数的类库,参考这篇博文
越狱环境:
除了支持上面两种Hook方式外,越狱环境还支持MobileSubstrate(CydiaSubstrate)里面的MSHookFunction
现在我已知的大致有inlinehook、fishhook、runtime hook等等
inlinehook
目前已知的只能在越狱环境中实现,如CydiaSubstrate的MSHookFunction就是一种inlinehook方式,其原理是对C函数的开头修改了汇编指令,使其跳转到新的实现,执行完成后再返回执行原指令。
MSHookFunction即能hook带符号的系统和自定义的C函数,也能hook只有地址的函数,如在IDA/Hopper中显示为sub_xxx的函数
CydiaSubstrate中还有一个MSHookMessageEx函数,主要是用来hook OC方法的,其原理就是基于OC的runtime,所以这个函数的使用在越狱和非越狱状态下都能正常工作。
fishhook
它利用 MachO 文件加载原理,通过修改懒加载和非懒加载两个表的指针达到 C 函数 Hook 的目的参考这篇博文
还有这篇
网友评论