2012-02-13 4 views
0

さまざまなアプリケーション(つまり、アプリケーションに関係なく)によって動的に読み込まれたライブラリをどのようにキャプチャするのかよくわかりません。私は、システムに動的にロードされるライブラリ名をログに記録する必要があるツールを作成しようとしています。それを行うAPIはありますか?システム全体にロードされたライブラリをキャプチャするには?

+0

はあなたには、いくつかの(またはすべて)が使用しているすべての共有ライブラリを知りたいです持ってランニングアプリケーション、または共有ライブラリの読み込みをキャッチしたいですか? –

答えて

0

確かに、ライブラリをロードするときにld-linux(8)(および/またはld.so(8))をログに記録してください。

+0

ハッキングではなく、別の方法ですか? – Whoami

+0

最初にやろうとしていることが恐ろしいハックですが、なぜハックではないソリューションがほしいのですか? –

0

ダイナミックローダーへの呼び出しを傍受して、あなたのものを行い、呼び出しを実際のローダーにチェーンすることができます。

コマンドを使用して、ローダーがどこにあるかあなたは発見することができます。

$ objdump -s -j .interp /bin/ls 

/bin/lsは単なるサンプルアプリケーションです)。

その他のオプションは、環境変数LD_DEBUGLD_DEBUG_OUTPUTを設定し、デバッグ出力に書き込まれたテキストを解釈することです(詳細はman ld.soを参照してください)。

さらに別のオプションは、/proc/*/mapsファイルを定期的に読み取ってそこのsahredファイルを解釈することです。

0

/proc疑似ファイルシステムを使用することもできます。 (thisも参照してください)。 /proc/1234/mapsなどなどと、あなたがmmap -edであるファイルを見つけることができます...

そしてもちろん、あなたがLD_PRELOAD trick

関連する問題