Analisi dei binari MIPS:esiste una libreria Python per l'analisi dei dati binari?
Domanda
Sto lavorando su un'utilità che deve risolvere gli indirizzi esadecimali in un nome di funzione simbolico e un numero di riga del codice sorgente all'interno di un binario.L'utilità verrà eseguita su Linux su x86, sebbene i file binari che analizzerà saranno per un sistema embedded basato su MIPS.I binari MIPS sono in formato ELF e utilizzano DWARF per le informazioni di debug simbolico.
Attualmente sto pianificando di eseguire il fork di objdump, passando un elenco di indirizzi esadecimali e analizzando l'output per ottenere nomi di funzioni e numeri di riga di origine.Ho compilato un objdump con supporto per i binari MIPS e funziona.
Preferirei avere un pacchetto che mi permetta di cercare le cose in modo nativo dal codice Python senza biforcare un altro processo.Non riesco a trovare alcuna menzione di libdwarf, libelf o libbfd su python.org, né alcuna menzione di python su dwarfstd.org.
È disponibile da qualche parte un modulo adatto?
Soluzione
si prega di controllare pyelftools - una nuova libreria Python pura pensata per fare questo.
Altri suggerimenti
Potrebbe interessarti la libreria DWARF di 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)
Non ne conosco nessuno, ma se tutto il resto fallisce potresti usarlo ctypes per usare direttamente libdwarf, libelf o libbfd.
Ho sviluppato un parser DWARF utilizzando Costruire.Attualmente abbastanza approssimativo e l'analisi è lenta.Ma ho pensato che avrei dovuto almeno fartelo sapere.Potrebbe soddisfare le tue esigenze, con un po' di lavoro.
Ho il codice in Mercurial, ospitato su bitbucket:
- http://bitbucket.org/cmcqueen1975/pythondwarf/
- http://bitbucket.org/cmcqueen1975/construct/ (modifiche necessarie alla libreria Construct)
Costruire è una biblioteca molto interessante.DWARF è un formato complesso (come sto scoprendo) e credo che spinga Construct ai suoi limiti.
hachior è un'altra libreria per l'analisi dei dati binari