Изменение значения регистра с помощью инструмента 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);
}