Analyse von MIPS-Binärdateien:Gibt es eine Python-Bibliothek zum Parsen von Binärdaten?

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

  •  09-06-2019
  •  | 
  •  

Frage

Ich arbeite an einem Dienstprogramm, das Hex-Adressen in einen symbolischen Funktionsnamen und eine Quellcode-Zeilennummer innerhalb einer Binärdatei auflösen muss.Das Dienstprogramm läuft unter Linux auf x86, obwohl die analysierten Binärdateien für ein MIPS-basiertes eingebettetes System bestimmt sind.Die MIPS-Binärdateien liegen im ELF-Format vor und verwenden DWARF für die symbolischen Debugging-Informationen.

Ich plane derzeit, objdump zu forken, eine Liste von Hex-Adressen zu übergeben und die Ausgabe zu analysieren, um Funktionsnamen und Quellzeilennummern zu erhalten.Ich habe einen Objdump mit Unterstützung für MIPS-Binärdateien kompiliert und er funktioniert.

Ich hätte lieber ein Paket, mit dem ich Dinge nativ im Python-Code nachschlagen kann, ohne einen weiteren Prozess zu forcieren.Ich kann keine Erwähnung von libdwarf, libelf oder libbfd auf python.org finden, noch irgendeine Erwähnung von Python auf dwarfstd.org.

Gibt es irgendwo ein passendes Modul?

War es hilfreich?

Lösung

überprüfen Sie bitte Pyelftools - eine neue reine Python-Bibliothek, die dies tun soll.

Andere Tipps

Vielleicht interessieren Sie sich für die DWARF-Bibliothek von 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)

Du solltest geben Bauen ein Versuch.Es ist sehr nützlich, Binärdaten in Python-Objekte zu analysieren.

Es gibt sogar ein Beispiel dafür ELF32 Datei Format.

Ich kenne keine, aber wenn alles andere fehlschlägt, könnten Sie sie verwenden ctypes um libdwarf, libelf oder libbfd direkt zu verwenden.

Ich habe einen DWARF-Parser mit entwickelt Bauen.Derzeit ziemlich grob und das Parsen ist langsam.Aber ich dachte, ich sollte es dir zumindest sagen.Mit etwas Aufwand könnte es Ihren Bedürfnissen entsprechen.

Ich habe den Code in Mercurial, gehostet bei Bitbucket:

Bauen ist eine sehr interessante Bibliothek.DWARF ist ein komplexes Format (wie ich gerade herausfinde) und bringt Construct meiner Meinung nach an seine Grenzen.

hachior ist eine weitere Bibliothek zum Parsen von Binärdaten

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top