用IDA python取消提取指令

时间:2017-10-04 09:42:03

标签: python arm reverse-engineering disassembly ida

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

2 个答案:

答案 0 :(得分:2)

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

  • EQ相等
  • CC清楚
  • CS是随身携带

有关详细信息,请参阅12

答案 1 :(得分:1)

尝试类似的东西(我在我的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 - 指定位置没有指令

     

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

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