確定的malloc調用我有一個簡單的程序,調用malloc,而我試圖建立一個pintool趕上從主可執行文件的malloc這直接調用。如何從主可執行
運用SimpleExamples malloctrace.cpp(隨SDK):
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);
}
}
我趕上許多malloc的電話,都是由我自己的代碼,或通過它使用的庫爲主。
使用objdump的,我看到調用函數malloc:
callq 4003b8 <[email protected]>
與malloc分配@ PLT開始。 瀏覽我的主要可執行文件中的例程我看到一個.plt例程,但我不知道它是否屬於malloc或任何其他外部函數。
我很欣賞你的幫助。
什麼是你的問題?如果它是否「malloc @ plt屬於malloc實現?」,答案是否定的。 'malloc @ plt'屬於撥打電話的二進制文件。一旦目標被運行時鏈接程序解析,它就會從libc調用malloc實現。 – Neitsa
我的問題是:我如何捕獲由我的代碼直接產生的malloc調用? (而不是所有的malloc調用,其中許多來自協助代碼,如libc等) – Jaaz