一个是经过修改内存中懒加载和非懒加载符号表指针所指向的地址来达到修改方法的目的,做用于主模块懒加载和非懒加载表的符号,在越狱和非越狱环境均可以使用,例如fishhook(符号表替换)。c++
一个是 cydia substrate: 经过inline hook的方式修改目标函数内存中的汇编指令,使其调转到本身的代码块,以达到修改程序的目的;主要是针对c,c++ 函数。同时支持针对oc的method swizzle(替换imp)
git
hook MGCopyAnswer 使用了 libcapstone + dlopen+ MSHookFunction
gestalt = dlopen("/usr/lib/libMobileGestalt.dylib", R