PIN:识别MOV和间接存储器操作数

PIN: identify MOV and indirect memory operand

本文关键字:存储器 操作数 识别 MOV PIN      更新时间:2023-10-16

对于程序分析工具,我需要识别所有类型的MOV操作(寄存器->寄存器,内存->寄存器,寄存器->内存)。我能够识别内存->寄存器,但其他的失败。

另一个问题是间接内存操作数。我需要找出他们的身份。我知道PIN能够检查我们是否有内存读/内存写。但是间接内存访问是例如MOV ax [ebx],不是吗?我该如何处理?在这个例子中,我需要ebx的内容。

欢呼

使用INS_OperandMemoryBaseReg等。我希望您熟悉在x86上寻址内存操作数的复杂方式。如果没有,请先阅读英特尔手册,或者阅读下面的快速摘要。你可以得到像[eax+ebx*2+25]的其他部分与INS_OperandMemoryIndexReg, INS_OperandMemoryScale, INS_OperandMemoryDisplacement等。

http://devilheart.googlecode.com/svn-history/r80/trunk/devilheart/project_pin/devilheart/ins_handler.cpp中的movRMHandler()中的代码应该可以让您开始使用