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);
}