2

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

}
4

0 回答 0