【问题标题】:Disassmbling with IDA python for extract instruction使用 IDA python 拆卸以获取提取指令
【发布时间】:2018-03-15 15:51:59
【问题描述】:
我正在使用 IDA Python 来提取二进制文件的指令。但不幸的是,它并没有完全打印一些说明。比如BCC、BCS、BEQ打印为B,有什么办法可以纠正这个问题吗?
这是我的代码!!!
for function_ea in idautils.Functions():
for ins in idautils.FuncItems(function_ea):
if idaapi.isCode(idaapi.getFlags(ins)):
print idc.GetMnem(ins)
【问题讨论】:
标签:
python
arm
reverse-engineering
disassembly
ida
【解决方案1】:
BCC、BCS 和 BEQ 是条件分支指令,因此具有相同的操作码。 B 之后的所有内容都是条件码,其中:
请参阅1 和2 了解更多信息。
【解决方案2】:
试试类似的方法(我在我的 ARM 数据库上检查过这个):
import idautils
for function_ea in idautils.Functions():
for ins in idautils.FuncItems(function_ea):
if idaapi.isCode(idaapi.getFlags(ins)):
cmd = idc.GetDisasm(ins)
mnem = cmd.split(' ')[0]
print mnem
来自 IDA 手册:
获取指令助记符
ea - 指令的线性地址
返回:0 - 指定位置没有指令
注意:此功能可能
不会返回与您在屏幕上看到的完全相同的助记符。
因此,如果您想查看完整的助记符名称,您应该使用外部反汇编程序/插件或解析反汇编行。