クローズドソース ソフトウェアの欠陥を克服するために、いくつかの OS X システム コールを挿入する(元の関数の代わりに自分の関数を呼び出す)必要があります。
結果として得られるソリューションは 10.5 (Leopard) 以降で機能することが望ましいですが、議論が十分に強力であれば、10.6 (Snow Leopard) を要求できるかもしれません。
結果として得られるソリューションは実行可能ファイルであることが望ましいですが、私はスクリプトで解決するかもしれません。
結果として得られるソリューションは、ターゲット アプリケーションが実行された後でも介入(「ベクトルを盗む」)できることが望ましいですが、アプリケーションのロード中に自分自身を挿入する必要があるテクノロジに落ち着くことができます。
結果として得られるソリューションは C または C++ で開発されることが望ましいですが、Objective-C などで解決することもできます。
これまでのところ、次のことを試しました。
1) DTraceスクリプトは私に多くのことを教えてくれましたが、D 言語の制限(制限されたフロー制御など)により、結果がスクリプトになることは言うまでもなく、私がやっていることは大きな苦痛になります。これは、私が撮影しているものほど整然とした自己完結型ではありません。
2) DYLD_INSERT_LIBRARIES介入。これは多くの点で滑らかですが、おそらく名前空間の平坦化が原因で(これが何を意味するのかを深く理解するふりはしません)、より単純な実行可能ファイルに対してはうまく機能しますが、ビルドしてもターゲット アプリケーションがチョークします。実際には呼び出しを介在させない何もしないライブラリ。
私の最新のアイデアは、mach_star ( https://github.com/rentzsch/mach_star ) を試してみることですが、まずここでやめて、常に私よりも多くのことを知っている Stack Overflow コミュニティに尋ねます...
…次は mach_star 以外を見てみようかな。