我想使用 PIN_GetContextReg 来获取寄存器的值,然后更改它并使用 PIN_SetContextReg 将其放回原处。PIN 手册说我可以对整数寄存器执行此操作,但除 REG_INST_PTR 之外我尝试的所有寄存器都会出错(PIN_GetContextReg/PIN_SetContextReg 不支持寄存器**)
这是代码
UINT32 old_val;
UINT32 new_val;
old_val = PIN_GetContextReg(ctxt, REG_EAX);
new_val = old_val ^ mask;
PIN_SetContextReg(ctxt, REG_EAX, new_val);
PIN_RemoveInstrumentation();
PIN_ExecuteAt(ctxt);
在这种情况下,我尝试使用寄存器 EAX,我得到了同样的错误。我正在使用 Pin 3.0