今日、Mach-O バイナリでシンボルを動的に再バインドするために使用できるフィッシュフック ライブラリhttps://github.com/facebook/fishhookに初めて遭遇しました(iOS 用と書かれていますが、コードは OS X でも動作すると思います)。
これまでのところ、私は mach_override https://github.com/rentzsch/mach_overrideしか知りませんでした。これは、同様の目標 (つまり、関数の 1 つの実装を別の実装に置き換える) を目的としていますが、関数の先頭のアセンブラー ステートメントを次のように書き換えます。別の場所にジャンプします。
フィッシュフック アプローチははるかに単純に見えますが、シンボル テーブルを「のみ」書き換えるので、mach_override アプローチより一般的ではないという直感があります。
あるプロジェクトが他のプロジェクトよりも優先されるべき状況 (つまり、一方のアプローチが機能しないが、もう一方のアプローチが機能する状況) について、誰かが技術的な事実をいくつか教えてもらえますか?