我正在尝试使用 PIN_SetContextReg 对寄存器的值进行一些更改。首先,我使用 PIN_GetContextReg 作为 old_val 获取 REG_INST_PTR 的值,然后我想对该值进行一些更改并将其设置在与 new_val 相同的寄存器中。我可以使用哪些可能的随机值。除了 REG_INST_PTR 之外,我还可以更改哪些其他寄存器,这将对正在检测的程序产生重大影响。
这是方法
static UINT32 old_val;
static UINT32 new_val;
VOID changeRegisterValue(CONTEXT *ctxt ) {
old_val = PIN_GetContextReg(ctxt, REG_INST_PTR);
new_val = ??
PIN_SetContextReg(ctxt, REG_INST_PTR, new_val);
}
方法在这里被调用
VOID Instruction(INS ins, VOID *v)
{
INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)changeRegisterValue,IARG_CONTEXT, IARG_END);
}