Analizzando binari MIPS: c'è una libreria Python per l'analisi di dati binari?

voti
10

Sto lavorando su un programma di utilità che ha bisogno di risolvere gli indirizzi esadecimali ad un nome di funzione e il codice sorgente numero simbolico riga all'interno di un binario. L'utilità eseguito su Linux su x86, anche se i file binari che analisi saranno per un sistema embedded basato su MIPS. I binari MIPS sono in formato ELF, utilizzando NANO per le informazioni di debug sui simboli.

Attualmente sto pensando di sborsare objdump, passando in un elenco di indirizzi esadecimali e verificando l'output per ottenere i nomi delle funzioni e dei numeri di riga sorgente. Ho compilato un objdump con il supporto per i binari MIPS, e si sta lavorando.

Preferirei avere un pacchetto che mi permette di guardare le cose in modo nativo dal codice Python senza sborsare un altro processo. Riesco a trovare alcuna menzione di libdwarf, libelf, o libbfd su python.org, né alcuna menzione di pitone su dwarfstd.org.

C'è un modulo adatto disponibile da qualche parte?

È pubblicato 05/09/2008 alle 15:44
fonte dall'utente
In altre lingue...                            


6 risposte

voti
3

Io non conosco nessuno, ma se tutto il resto fallisce si potrebbe utilizzare ctypes utilizzare direttamente libdwarf, libelf o libbfd.

Risposto il 05/09/2008 a 16:23
fonte dall'utente

voti
4

Si dovrebbe dare Costruire una prova. È molto utile per analizzare i dati binari in oggetti pitone.

C'è anche un esempio per l'ELF32 formato di file.

Risposto il 04/02/2009 a 10:19
fonte dall'utente

voti
3

Sto sviluppando un parser NANO utilizzando Construct . Attualmente abbastanza agitato, e l'analisi è lento. Ma ho pensato che avrei dovuto almeno farvi sapere. Può soddisfare le vostre esigenze, con un po 'di lavoro.

Ho il codice in Mercurial, ospitata al bitbucket:

Costruire è una libreria molto interessante. NANO è un formato complesso (come sto scoprendo) e spinge Construct ai suoi limiti credo.

Risposto il 30/08/2009 a 01:48
fonte dall'utente

voti
2

hachior è un'altra libreria per l'analisi di dati binari

Risposto il 11/06/2010 a 15:23
fonte dall'utente

voti
8

Potreste essere interessati nella biblioteca nano 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)
Risposto il 05/09/2010 a 18:29
fonte dall'utente

voti
4

Si prega di verificare pyelftools - una nuova libreria Python puro scopo di fare questo.

Risposto il 06/01/2012 a 08:11
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more