MIPS バイナリの分析:バイナリデータを解析するためのPythonライブラリはありますか?

StackOverflow https://stackoverflow.com/questions/45954

  •  09-06-2019
  •  | 
  •  

質問

私は、16 進アドレスをバイナリ内のシンボリック関数名とソース コード行番号に解決する必要があるユーティリティに取り組んでいます。このユーティリティは x86 上の Linux 上で実行されますが、分析されるバイナリは MIPS ベースの組み込みシステム用になります。MIPS バイナリは ELF 形式であり、シンボリック デバッグ情報に DWARF を使用します。

現在、objdump をフォークし、16 進アドレスのリストを渡し、出力を解析して関数名とソース行番号を取得することを計画しています。MIPS バイナリをサポートする objdump をコンパイルしましたが、動作しています。

別のプロセスをフォークせずに Python コードからネイティブに検索できるパッケージがあればいいのですが。python.org では libdwarf、libelf、または libbfd についての言及が見つかりません。また、dwarfstd.org では Python についての言及が見つかりません。

どこかに適切なモジュールはありますか?

役に立ちましたか?

解決

チェックしてください ピエルフツール - これを行うための新しい純粋な Python ライブラリ。

他のヒント

以下の DWARF ライブラリに興味があるかもしれません。 pydevtools:

>>> from bintools.dwarf import DWARF
>>> dwarf = DWARF('test/test')
>>> dwarf.get_loc_by_addr(0x8048475)
('/home/emilmont/Workspace/dbg/test/main.c', 36, 0)

与えるべきです 構築する 試してみてください。バイナリ データを Python オブジェクトに解析するのは非常に便利です。

という例もあります。 エルフ32 ファイル形式。

何も知りませんが、他のすべてが失敗した場合は、次の方法を使用できます ctypes libdwarf、libelf、または libbfd を直接使用します。

私はDWARFパーサーを開発してきました。 構築する. 。現時点ではかなり荒く、解析が遅いです。でも、せめて知らせてあげるべきだと思いました。少し工夫すれば、あなたのニーズに合うかもしれません。

コードは Mercurial にあり、bitbucket でホストされています。

構築する とても興味深い図書館です。DWARF は (私が発見しているところによると) 複雑な形式であり、Construct をその限界まで押し上げていると思います。

ハチオール バイナリデータを解析するための別のライブラリです

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top