检测英特尔PIN上的非法指令操作码

时间:2017-10-04 18:05:45

标签: c assembly x86-64 intel intel-pin

我正在编写一个Pin工具,我想检测具有特定操作码的指令。我有一个示例C程序的可执行文件,我正在打印hello world。使用的架构是x86_64,我在程序中有一些汇编指令。我将此程序的汇编指令跟踪提供给英特尔PIN工具,我正在运行指令跟踪并执行操作。

我的目标是从原始程序中检测特定的操作码。例如,我在我的C程序中添加了以下行 -

VOID Instruction(INS ins, VOID *v) 
{
   if(INS_Opcode(ins)==0x17)
   {
        //Do something
   }
}

由于这个0x17是我的C程序跟踪中的指令。在我的英特尔PIN工具中,我有一个这样的指令跟踪 -

{{1}}

然而,当我运行指令跟踪时,由于我放置了非法指令0x17,我的Pin工具失败。

当我打印指令操作码时,我看到它们与x86_64的操作码不同。例如,当我打印时,指令AND具有操作码0x17。我是否必须进行某种解码,或者我是否以错误的方式检测到操作码?

0 个答案:

没有答案