type
status
date
slug
summary
tags
category
icon
password
- MethodSwizzle
- fishhook
- Cydia Substrate
- category ovveride
fishhook
使用
验证
![notion image](https://cdn.nlark.com/yuque/0/2020/png/279754/1597394673823-f7af3e56-7645-43b3-82a3-7cc8bfd0dedf.png?t=a2ea676c-3571-40ea-9e0d-3201ad36ac6f)
查看Demo所在的地址空间:
![notion image](https://cdn.nlark.com/yuque/0/2020/png/279754/1597394675115-b4b8cea5-6c74-4a6b-a7fa-517e9fa64efd.png?t=e7f567a3-c90d-4406-afb8-3cdf5234a076)
将编译后的 Product下FishhookDemo.app,查看其内容,将
FishhookDemo
拖入 MachOView 工具,查看 Lazy Symbol Pointers 下的 NSLog的偏移。![notion image](https://cdn.nlark.com/yuque/0/2020/png/279754/1597394675974-703dced9-1a73-4294-9d33-9ab18269cfb2.png?t=18e4700d-df3a-4325-a9b5-cc364e9536ea)
查看
有几个需要说明的点:
x
是查看地址的命令,即 memory read
dis -s
是查看汇编指令
- iOS 是小端序,所以地址要从右往左读取,如下:
![notion image](https://cdn.nlark.com/yuque/0/2020/png/279754/1597394678592-cb50b476-650c-4d93-bb59-ca46d3207332.png?t=eb0b68bc-31a8-483d-b91d-948f8d010a33)
原理
fishhook 是如何通过字符串找到函数的呢?
![notion image](https://cdn.nlark.com/yuque/0/2020/png/279754/1597400615720-dc102ab1-8dfb-4fe6-b0bb-1baa6f2a50e1.png?t=be0f584d-9ed1-4886-a61c-ae04f44eab32)
懒加载符号表(Lazy Symbol Pointers)开始入手。懒加载符号表里面第一个符号是 NSLog 的指针。这个懒加载符号表有一个与之一一对应的符号表(Indirect Symbols)。
![notion image](https://cdn.nlark.com/yuque/0/2020/png/279754/1597399212499-75eee584-edd9-41ac-b11b-a0e2504b7368.png?t=53644d45-6d92-4af6-bf71-8684e6b9103b)
InDirect Symbols 找到对应符号的偏移量,如下图选中,其 Data 中的值:000000ED,十进制是 237,就是在 Symbol Table 中的序号。
![notion image](https://cdn.nlark.com/yuque/0/2020/png/279754/1597399207846-909adb74-edd9-48ee-9df3-555882a2c55a.png?t=e1ecbcda-a78f-41d8-ad5a-3c77931ba45b)
在 Symbol Table 中找到 第237个,如下图,其中第一行显示了NSLog 在 String Table 中的偏移,即 000000DB。
![notion image](https://cdn.nlark.com/yuque/0/2020/png/279754/1597399210576-2236e506-d059-4cbf-87a1-c7991d1dc8dc.png?t=f300d893-04cb-4cfc-aa75-5f6ad0ac782f)
根据上一步找到的偏移量000000DB,以及 String Table 自身的偏移量00008820(第一行),得到 NSLog 函数最后的偏移量:88
00008820+000000DB=000088F8,在下图中,改地址,就在选中行。
_ 是函数的开始,. 是分隔符 。5F是从 _开始,往后依次 _NSLog
![notion image](https://cdn.nlark.com/yuque/0/2020/png/279754/1597399204631-ac830aea-bed9-427d-a6f9-a87d50fd10e0.png?t=5d09ee48-0b2c-4daf-adbf-bd3f5524abd5)
代码研读
框架
参考
链接
代码