我正在编写一个 Pin 工具,我想在其中检测具有特定操作码的指令。我有一个来自示例 C 程序的可执行文件,我正在其中打印 hello world。使用的体系结构是 x86_64,我在程序中跟踪了汇编指令。我将该程序的汇编指令跟踪提供给英特尔 PIN 工具,我在该工具上运行指令跟踪并执行操作。
我的目标是从原始程序中检测特定的操作码。例如,我在我的 C 程序中添加了以下行 -
asm(".byte 0x17"); // pop ss in 32-bit mode, but illegal in x86-64
由于这个 0x17 是我的 C 程序跟踪中的一条指令。在我的英特尔 PIN 工具中,我有这样的指令跟踪 -
VOID Instruction(INS ins, VOID *v)
{
if(INS_Opcode(ins)==0x17)
{
//Do something
}
}
然而,当我运行指令跟踪时,我的 Pin 工具由于我放置的非法指令 0x17 而失败。
当我打印指令操作码时,我发现它们的操作码与 x86_64 的操作码不同。例如,当我打印时,指令 AND 的操作码为 0x17。我是否必须进行某种解码,或者我是否以错误的方式检测操作码?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)