私はmallocを呼び出す簡単なプログラムを持っていますが、主な実行可能ファイルからこの直接呼び出しをmallocにキャッチするためのpintoolを開発しようとしています。私は多くのmalloc関数呼び出しをキャッチ、両方の自分自身のコードによって、または、それが使用するライブラリによって配向してい主な実行可能ファイルからmalloc呼び出しを特定する方法
VOID Image(IMG img, VOID *v)
{
RTN mallocRtn = RTN_FindByName(img, MALLOC);
if (RTN_Valid(mallocRtn))
{
RTN_Open(mallocRtn);
RTN_InsertCall(mallocRtn, IPOINT_BEFORE,(AFUNPTR)Arg1Before, IARG_ADDRINT, MALLOC, IARG_G_ARG0_CALLEE, IARG_END);
RTN_Close(mallocRtn);
}
}
:SimpleExamples(SDKに付属している)からmalloctrace.cppを使用して
。 objdumpの使用
、私は、malloc関数への呼び出しを参照してください。
callq 4003b8 <[email protected]>
のmalloc @のPLTから始まります。 メインの実行可能ファイル内でルーチンを参照すると、.pltルーチンが表示されますが、mallocまたはその他の外部関数に属しているかどうかはわかりません。
ご協力いただきありがとうございます。
あなたの質問は何ですか? 'malloc @ pltがmalloc実装に属していますか? 'の場合、答えは「いいえ」です。 'malloc @ plt'は呼び出しを行うバイナリに属します。実行時リンカーによってターゲットが解決されると、**は** libcからmalloc実装を呼び出します。 – Neitsa
私の質問です:どのように私のコードによって直接発生したmalloc呼び出しをキャッチできますか? (多くのmalloc呼び出しとは対照的に、多くの人がlibcなどのコードを助けてくれました) – Jaaz