使用 IDA python 反汇编提取指令

Disassmbling with IDA python for extract instruction

我正在使用 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)

BCCBCSBEQ 是条件分支指令,因此具有相同的操作码。 B 之后的所有内容都是条件代码,其中:

  • 情商相等
  • CC 进位清除
  • CS为进位集

有关详细信息,请参阅 1 and 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 手册:

Get instruction mnemonics

ea - linear address of instruction

returns: 0 - no instruction at the specified location

note: this function may not return exactly the same mnemonics as you see on the screen.

所以,如果你想看到完整的助记名称,你应该使用外部 dissasembler/plugin 或解析反汇编代码。