在 IDAPython 中,您可以使用Assemble(ea, line)函数获取汇编指令的相应操作码。
下面是一个使用 PE 文件/x86 处理器类型的示例:
Python>Assemble(FirstSeg(), 'asdf')
Invalid mnemonic -> OK
(False, 'Assembler failed: asdf')
正如我们所看到的,Assemble
调用返回False
并打印使用像一个不正确的汇编指令,当一个无效的记忆一个错误信息asdf
。
使用有效的汇编指令,将返回正确的操作码:
Python>Assemble(FirstSeg(), 'ret')
(True, '\xc3')
这是使用 PPC-ELF/ppc 处理器类型的相同函数:
Python>Assemble(FirstSeg(), 'asdf')
(True, '\x00')
正如我们所见,没有打印错误消息,并且\x00
返回 a 作为结果操作码。
有效sc
指令和任何其他有效 ppc 指令返回相同(错误)的值\x00
:
Python>Assemble(FirstSeg(), 'sc')
(True, '\x00')
Assemble(ea, line)
使用 PPC-ELF/ppc 处理器类型时,如何让 IDAPython返回正确的操作码?
这是函数采用的跟踪:
还有一个 Assemble() 的用法示例,如果不清楚:https : //code.google.com/p/idapython/source/browse/trunk/Scripts/FindInstructions.py