X86 为什么dynamorio的这个指令跟踪程序的输出比我的多?
我正在尝试使用工具DynamoRIO进行指令跟踪。我发现他们的站点上已经有一个指令跟踪的示例:。然而,我不明白他们为什么在这个系统中使用这么多操作。我尝试以另一种简单的方式重新编写此函数:X86 为什么dynamorio的这个指令跟踪程序的输出比我的多?,x86,instrumentation,instructions,X86,Instrumentation,Instructions,我正在尝试使用工具DynamoRIO进行指令跟踪。我发现他们的站点上已经有一个指令跟踪的示例:。然而,我不明白他们为什么在这个系统中使用这么多操作。我尝试以另一种简单的方式重新编写此函数: instrument_instr(void *drcontext, instrlist_t *ilist, instr_t *where) { app_pc pc; per_thread_t *data; data = drmgr_get_tls_field(drcontext,
instrument_instr(void *drcontext, instrlist_t *ilist, instr_t *where)
{
app_pc pc;
per_thread_t *data;
data = drmgr_get_tls_field(drcontext, tls_index);
pc = instr_get_app_pc(where);
fprintf(data->logf, PIFX",%s\n",
(ptr_uint_t)pc, decode_opcode_name(instr_get_opcode(where)));
}
我发现这个简单的方法似乎也能很好地工作,只是它的输出比官方的示例要少
我不知道为什么我的方法日志较少,因为我不知道为什么官方示例代码会执行如此琐碎的操作。有人熟悉迪纳莫里奥的API吗?(尤其是drmgr\u register\u bb\u instrumentation\u event
function。我不明白他们为什么要这样使用回调函数)