我创建了一个简单的pin工具,可以转储任何win32 CreateFileW调用.它工作正常,但当我尝试将它附加到已经运行的进程时,该过程只是终止.尝试了几个应用程序(记事本,wordpad,Internet Explorer),相同的结果.这是我使用的命令:
.\pin -pid 8804 -t dumpfile.dll
Run Code Online (Sandbox Code Playgroud)
我有一个提示尝试关闭多线程,如下所示:
.\pin -mt 0 -pid 8804 -t dumpfile.dll
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.还尝试了另一个,开箱即用的pintool,也没有工作,所以问题不在我的pintool.有任何想法吗?
提前致谢!
我制作了一个 pin 工具来转储 CreatFile win32 调用(在我的例子中为 CreateFileW)及其返回值。它看起来像这样:
/* ... */
VOID Image(IMG img, VOID *v)
{
RTN cfwRtn = RTN_FindByName(img, "CreateFileW");
if (RTN_Valid(cfwRtn))
{
RTN_Open(cfwRtn);
RTN_InsertCall(cfwRtn, IPOINT_BEFORE, (AFUNPTR)CreateFileWArg,
IARG_ADDRINT, "CreateFileW",
IARG_FUNCARG_ENTRYPOINT_VALUE, 0,
IARG_END);
RTN_InsertCall(cfwRtn, IPOINT_AFTER, (AFUNPTR)CreateFileWafter,
IARG_FUNCRET_EXITPOINT_VALUE, IARG_END);
RTN_Close(cfwRtn);
}
}
/* ... */
VOID CreateFileWArg(CHAR * name, wchar_t * filename)
{
TraceFile << name << "(" << filename << ")" << endl;
}
VOID CreateFileWafter(ADDRINT ret)
{
TraceFile << "\tReturned handle: " << ret << endl;
}
Run Code Online (Sandbox Code Playgroud)
它给出了有趣的结果。例如,在一个只打开现有文件而不执行其他操作的小程序上,它给出:
CreateFileW(file.txt) …Run Code Online (Sandbox Code Playgroud)