hook objc_msgSend demo
demo 中会使用到汇编的知识,若不了解,我上一篇文章有简略的总结
hook objc_msgSend 之后统计了所有方法的调用时间。
具体步骤:
- 使用 fishhook hook objc_msgSend
- 由于 objc_msgSend 是用汇编编写,所以要对 x0 ~ x7进行操作(demo只支持arm64)
- 记录下方法调用者、方法选择器、返回地址。存储进 pthread 标志中,使其与线程一一对应。
- 调用原来的 objc_msgSend 方法
- 返回原来的 objc_msgSend 的返回地址
详细情况在demo已经有中文注释,关于fishhook部分也有对应的中文注释