hook

2021-02-04  本文已影响0人  生产八哥

大部分hook需要3个固定参数:

编译阶段是不知道函数的真实地址的,但是知道自定义函数在当前可执行文件里的偏移地址。

个人理解的原理:Mach-O中TEXT段只读的, DATA段可读可写的。内部自定义函数是不会生成符号表的。系统函数也叫外部函数,编译时如果是外部函数,則会生成一个符号表用来记录函数名称,保存在Mach-O的DATA段。运行时dyld会把外部函数的真正函数地址当做value赋值给符号表(符号绑定binding),函数名称也叫符号作为key,这个过程叫PIC(Position Independent Code)。fishhook目的就是把这个符号地址改了。一个符号占8个字节。

参考文章1

参考文章2

上一篇 下一篇

猜你喜欢

热点阅读