英特尔PIN中新指令的仿真

时间:2017-10-04 15:19:56

标签: c++ assembly x86-64 cpu-architecture intel-pin

我正在尝试使用英特尔PIN模拟x86中的一些新指令。为此,我在示例C程序中创建了asm函数,该程序将作为可执行文件传递到PIN工具中。

例如,操作码0x17在x86-64中是非法的,因此我将使用该操作码来模拟我的新指令。 (在32位模式下它是pop ss。)所以我在我的代码中使用了这样的东西 -

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 个答案:

没有答案