どちらのメソッドも、システムコールとパラメーターおよびそれらの戻り値を収集するために使用されます。私たちが好むときLD_PRELOAD
とその理由は?たぶん、私たちは経由でのみシステムコールを収集できると言うことができますが、トリックstrace
でライブラリコールを収集することができます。LD_PRELOAD
ただし、名前が。であるライブラリ用の別のトレーサーがありltrace
ます。
質問する
1667 次
1 に答える
6
strace
はptrace(2) syscallを使用しているPTRACE_SYSCALL
ため (おそらく)、すべてのシステム コールをキャッチします (によってインストールされたカーネル フックを介してptrace
)。静的にリンクされた実行可能ファイル、またはディストリビューションの GNU Glibc 以外のものを使用する実行可能ファイル (例: musl-libc、または の古いバージョンのようなアセンブリで記述されたユーティリティbusybox
) で動作します。
LD_PRELOAD
トリックは動的ローダーeg/lib64/ld-linux-x86-64.so.2
または/lib/ld.so
(ld.so(8) manページを参照)などを使用します...したがって、静的にリンクされた実行可能ファイル(または動的ローダーとGNU libc以外のものを使用するもの)では機能しません。
ltrace
おそらくptrace
ベースにもなっています。
これらはすべてフリー ソフトウェアなので、ソース コードを調べて (さらに改良して) ください。
于 2012-12-13T19:01:48.830 に答える