使用IDA python解扰提取指令

使用IDA python解扰提取指令,python,arm,reverse-engineering,disassembly,ida,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.GetMne

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

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

  • 情商是平等的
  • CC是清零的
  • CS是进位集
有关更多信息,请参阅和。

尝试类似的方法(我在我的ARM数据库中检查了这一点):

来自IDA手册:

获取指令助记符

ea-指令的线性地址

返回:0-指定位置没有指令

注:此功能可能会 不能返回与屏幕上显示的完全相同的助记符

所以,若你们想看到完整的助记符名称,你们应该使用外部的disassembler/插件或者解析反汇编行

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