2017-10-04 14 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 - 指定された場所に命令がありません

注:この機能は、 が画面に表示されているのとまったく同じニーモニックを返さないことがあります。

したがって、完全なニーモニック名を表示するには、外部dissasembler/pluginまたはparse disassembly行を使用する必要があります。

2

BCCBCSBEQは、条件分岐命令であるので、同じオペコードを持っています。

  • EQが等しい
  • CCで

詳細については12を参照してください設定運ぶ明らか

  • CSれる運びです:B後のすべては、条件コードは、あります。

  • 関連する問題