Изменение значения регистра с помощью инструмента PIN-кода

Я пытаюсь внести некоторые изменения в значение регистра, используя PIN_SetContextReg. Сначала я получаю значение REG_INST_PTR, используя PIN_GetContextReg как old_val, затем я хочу внести некоторые изменения в это значение и установить его в том же регистре, что и 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);

}

0 ответов

Другие вопросы по тегам