今天我第一次遇到了鱼钩库https://github.com/facebook/fishhook,它可以用来动态地重新绑定 Mach-O 二进制文件中的符号(他们说适用于 iOS,但我猜该代码也适用于 OS X)。
到目前为止,我只知道并使用了 mach_override https://github.com/rentzsch/mach_override,它旨在实现类似的目标(即将一个函数的一个实现替换为另一个),但将函数开头的汇编语句重写为跳转到不同的位置。
鱼钩方法看起来要简单得多,但由于它“只”重写了符号表,我有直觉认为它不如 mach_override 方法通用。
有人可以就一个项目应该优先于另一个项目的情况(即一种方法行不通,但另一种方法行得通的情况)给出一些硬性技术事实吗?