、、、などmmap
のLD_PRELOAD関数を試していますが、一部の関数はLD_PRELOADを正常に取得しますが、他の関数は取得しません。たとえば、、は完全にプリロードされていますが、そうではありませんが、 pthreadを使用しているため、によって報告されたように、プログラムから呼び出されていることは確かです。ここでLD_PRELOADされない理由は何ですか?read
open
clone
mmap
read
open
clone
clone
strace
clone
質問する
850 次
1 に答える
1
strace
システムコールを表示します; LD_PRELOADは(Cライブラリ)関数をオーバーライドします。これは、システムコールが、関数シンボルを経由せずに(たとえば、Cライブラリ内の内部リンケージを介して、またはシステムコールを直接呼び出すことclone
なく)、別の関数によって呼び出されていることを示している可能性があります。clone
実際、clone
Posixライブラリ関数ではありません。たまたま公開されているのはLinux実装の詳細です。マニュアルページには次のように書かれています。
clone()およびsys_clone呼び出しはLinux固有であり、移植を目的としたプログラムでは使用しないでください。
代わりに、LD_PRELOAD-オーバーライドpthread_create
などを行う必要があります。他のプラットフォームでは、。なしで実装できclone
ます。
于 2012-06-25T16:07:34.007 に答える