Эмуляция новой инструкции в Intel PIN

Я пытаюсь эмулировать некоторые новые инструкции в x86, используя Intel PIN. Для этого я создал функции asm в примере программы на C, который будет передаваться как исполняемый файл в инструмент PIN.

Например, код операции 0x17 недопустим в x86-64, поэтому я буду использовать этот код операции для имитации моей новой инструкции. (Это pop ss в 32-битном режиме.) Так что я использую что-то вроде этого в моем коде

asm(".byte 0x17");

Однако, когда я запускаю свою трассировку инструкций, используя инструмент PIN, где я инструктирую инструкции, я не обнаруживаю 0x17. Это инструментальная функция, которую я использую

VOID Instruction(INS ins, void *v)
{
  if(INS_Opcode(ins)==0x17)
  {
        INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)docount, IARG_THREAD_ID, IARG_END);
        INS_Delete(ins);
  }
}

Я выполняю свой анализ в docount() функции, а затем удалите инструкцию.

Однако я не обнаруживаю незаконную инструкцию вообще. По какой-то причине инструкции, которые я получаю, не имеют те же коды операций, что и у x86.

Я компилирую все на x86_64, но все еще ничего не получаю. Где-нибудь я делаю что-то не так?

0 ответов

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