我正在尝试使用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);
}