1

Appleのボイラープレートコードを使用して、問題なくCFPluginをロードするアプリがあります。

プラグインにはバグがあります-そしてその誰か他の人のバイナリ...

プラグインは、AppleSystemFrameworkを呼び出します。プラグインがフレームワークに対して行いたい呼び出しをインターセプトできれば、すべてうまくいくでしょう。その後、「実際の」バージョンを呼び出す必要はありません。基本的に、AppleのCFベースのルーチンではなく、自分のバージョンを呼び出したいと思います。

フレームワーク呼び出しへの呼び出しのインターセプトはアプリのコードで機能しますが、プラグインはインターセプトではなく「実際の」フレームワーク呼び出しを呼び出します。

私は実際にはdyldの専門家ではありませんが、プラグインは私のアプリのアドレススペースにありますが、どういうわけか独自のバージョンのAppleFrameworkをロードしているようです。

プラグインなどをロードしてインターセプトコードを呼び出させるためにできる魔法はありますか?

4

1 に答える 1

0

1) Amit の本http://osxbook.com (__interpose DATA セクションを含む)で説明されているように、別の libFix.dylib で DYLD インターポーズを行います。

2) アプリを起動する前に DYLD_INSERT_LIBRARIES=/path/to/libFix.dylib を使用します

この男のコメントも役立つかもしれません :

于 2012-05-15T08:56:32.833 に答える