10.通过符号表找到符号

一、需要用到的结构

1.1 懒加载符号表

懒加载符号表是再用到的时候才会进行符号绑定的表。 我们分析MachO可以发现NSLog就在这里面

1.2 总符号表

完整的符号表在这里

1.3 间接符号表

在懒加载符号表中,我们发现,都有个Indirect Pointer。 这就说名这里是间接符号。 先在我们来到间接符号表:

我们可以发现这里面和懒加载符号表中标有Indirect Pointer的有对应关系。

二、找到NSLog的符号

IndirectSymbols中我们找到NSLog。

2.1 Data=000000B8

这里的值代表了当前间接符号在总表中的下标。我们换算一下十进制:184

2.2 Symbols

找到下标184的,Data为000000CE,description:String table index。也就是String Table的下标。

2.3 StringTables

来到StringTable,第一个地址为00011230,我们加上下标000000CE,得到0x112FE

这里我们就找到了_NSLog

三、fishhook是和我们这种反向的一个过程

11.fishhook原理

Last updated