2017-10-04 100 views
2

我用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) 

回答

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 - 在指定位置沒有指令

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

所以,如果你想看到完整的助記名稱,你應該使用外部消散彙編器/插件或解析反彙編線。

2

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

  • EQ等於
  • CC是進行明確
  • CS被攜帶設置

有關更多信息,請參見12