这几天,反复的找动态库加载 和 可执行文件 结构的 资料学习,开始的时候,懵懵懂懂。但是,随着这几天的深入学习,逐渐的豁然开朗起来。
关于 fishhook 的原理 ,和动态库加载,rebase ,binding 过程 的 文章,我就不写了,因为网上有好多了。 我把我看了的几篇 贴在这里表示纪念一下吧。
https://www.jianshu.com/p/c58001ae3da5 深入剖析 iOS 性能优化
https://www.jianshu.com/p/693683967718 fishHook原理
https://www.jianshu.com/p/6514b0a9d7c4 Fishhook 学习笔记
https://www.jianshu.com/c/1efd74950537?utm_source=desktop&utm_medium=notes-included-collection
总结:
fishHook其实 就是:
通过 Load commands 中的 linkedit -> Symbol table ,string table -> _DATA的 Lazy Symbol Pointers 与 Non-Lazy Symbol Pointers 。修改懒加载表(Lazy Symbol Pointers)、非懒加载表(Non-Lazy Symbol Pointers)中的符号地址的指向,从而达到hook的目的。
网友评论