用IDA python解开提取指令

问题描述:

我用IDA Python解压二进制指令。但不幸的是,它并没有完全打印一些指令。例如,BCC,BCS,BEQ打印为B.有什么方法可以纠正这个问题吗? 这是我的代码!用IDA python解开提取指令

for function_ea in idautils.Functions(): 
    for ins in idautils.FuncItems(function_ea): 
     if idaapi.isCode(idaapi.getFlags(ins)): 
      print idc.GetMnem(ins) 

尝试类似的东西(我查了一下这个在我的数据库为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 - 在指定位置没有指令

注意:此功能可能不会返回与您在屏幕上看到的完全相同的助记符。

所以,如果你想看到完整的助记名称,你应该使用外部消散汇编器/插件或解析反汇编线。

BCCBCSBEQ是条件分支指令,所以具有相同的操作码。在B后一切条件代码,其中:

  • EQ等于
  • CC是进行明确
  • CS被携带设置

有关更多信息,请参见12