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?

È stato utile?

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)

Dovresti dare Costruire un tentativo.È molto utile analizzare i dati binari in oggetti Python.

C'è anche un esempio per il ELF32 formato del file.

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:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top