确定的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