iOS风控专题

IOS之fishhook原理探究

2019-01-02  本文已影响0人  Devil_Chen

前言

1、先在懒加载表中建立一个指针,指向外部函数
2、DYLD会动态的进行绑定,将MachO中的懒加载表段中的指针,指向外部函数(DYLD会告诉MachO要依赖的外部库的位置)
3、懒加载表段中建立的指针就是符号(symbols),它是帮你指向内部的函数调用,指向外部的函数地址。所以,fishhook的rebind_symbols(重新绑定符号)函数,它就是将你指向系统的函数的符号,给重新绑定为指向你内部的函数,这也是fishhook的原理。

实践

1、编写代码

image.png

2、打断点并编译运行

3、查看MachO文件

image.png
image.png
image.png

4、找出NSLog原本地址

5、进行符号重绑定(rebind_symbols)

image.png

题外话:通过符号找字符串

1、通过懒加载表Lazy Symbol Pointers找到NSLog顺序

image.png

2、在Indirect Symbols按上面的顺序找到NSLog

image.png

3、把Indirect Symbols表中NSLog的data值转为10进制,0xC8 = 200。然后在Symbols Table -> Symbols中查找

image.png

4、把Symbols表中NSLog的data值 + String Table中的第一条数据的pFile值(0xD0 + 0x7528 = 0x75F8)

上一篇 下一篇

猜你喜欢

热点阅读