我使用以下脚本将 IDA 设置为跟踪模式,并在 EAX 寄存器设置为给定值后立即停止:
#include <idc.idc>
static main()
{
auto r_eip, code, eax;
EnableTracing(TRACE_STEP, 1);
for ( code = GetDebuggerEvent(WFNE_ANY|WFNE_CONT, -1); // resume
code > 0;
code = GetDebuggerEvent(WFNE_ANY, -1) )
{
r_eip = GetEventEa();
eax = GetRegValue("EAX");
Message("EAX:%08Xh\n", eax);
if ( eax == 0x00000001 )
break;
}
PauseProcess();
EnableTracing(TRACE_STEP, 0);
}
但是它不起作用:我收到以下错误消息:“变量'EAX'未定义
如果我eax = GetRegValue(...)在注释中添加一行,在运行中,但 eax 始终为零。
代码改编自这里:https : //www.hex-rays.com/products/ida/debugger/scriptable.shtml