I、hook 的方式:
-
一个是通过修改内存中懒加载和非懒加载符号表指针所指向的地址来达到修改方法的目的,作用于主模块懒加载和非懒加载表的符号,在越狱和非越狱环境都可以使用,例如fishhook(符号表替换)。
-
一个是 cydia substrate:
通过inline hook的方式修改目标函数内存中的汇编指令,使其调转到自己的代码块,以达到修改程序的目的;主要是针对c,c++ 函数。同时支持针对oc的method swizzle(替换imp)
- hooking-swift-methods 利用MSHookFunction、MSFindSymbol进行实现。
- Using nm , we can dump the Swift symbols
- Using MSFindSymbol we can find the function pointer to the Swift method, and call it
hook MGCopyAnswer 使用了 libcapstone + dlopen+ MSHookFunction
- 使用capstone进行MGCopyAnswer方法地址获取,然后使用MSHookFunction 对方法进行hook
gestalt = dlopen("/usr/lib/libMobileGestalt.dylib", R
- hooking-swift-methods 利用MSHookFunction、MSFindSymbol进行实现。