Analizing binários MIPS: existe uma biblioteca Python para analisar dados binários?

votos
10

Eu estou trabalhando em uma aplicação que precisa para resolver endereços hexadecimais para um nome de função e código fonte número da linha simbólica dentro de um binário. O utilitário será executado no Linux em x86, embora os binários que analisa será por um sistema embarcado baseado em MIPS. Os binários MIPS estão no formato ELF, usando ANÃO para obter as informações de depuração simbólicas.

Atualmente estou planejando desembolsar objdump, passando em uma lista de endereços hexadecimais e analisando a saída para obter os nomes de funções e números de linha fonte. Eu compilei uma objdump com suporte para binários MIPS, e que está trabalhando.

Eu preferiria ter um pacote permitindo-me a olhar as coisas de forma nativa a partir do código Python sem bifurcação outro processo. Posso encontrar nenhuma menção de libdwarf, libelf, ou libbfd em python.org, nem qualquer menção de python em dwarfstd.org.

Existe um módulo adequado disponível em algum lugar?

Publicado 05/09/2008 em 15:44
fonte usuário
Em outras línguas...                            


6 respostas

votos
8

Você pode estar interessado na biblioteca ANÃO de 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)
Respondeu 05/09/2010 em 18:29
fonte usuário

votos
4

Verifique pyelftools - uma nova biblioteca pura Python pretendia fazer isso.

Respondeu 06/01/2012 em 08:11
fonte usuário

votos
4

Você deve dar Construir uma tentativa. É muito útil para analisar dados binários em objetos python.

Há até mesmo um exemplo para o ELF32 formato de arquivo.

Respondeu 04/02/2009 em 10:19
fonte usuário

votos
3

Eu tenho vindo a desenvolver um analisador ANÃO usando Construir . Atualmente relativamente rústica e de análise é lento. Mas eu pensei que deveria, pelo menos, deixá-lo saber. Pode atender às suas necessidades, com um pouco de trabalho.

Eu tenho o código no Mercurial, hospedado no bitbucket:

Construir é uma biblioteca muito interessante. Anão é um formato complexo (como eu estou descobrindo) e empurra Construir a seus limites, eu acho.

Respondeu 30/08/2009 em 01:48
fonte usuário

votos
3

Eu não sei de nenhum, mas se tudo mais falhar, você pode usar ctypes para usar diretamente libdwarf, libelf ou libbfd.

Respondeu 05/09/2008 em 16:23
fonte usuário

votos
2

hachior é outra biblioteca para analisar dados binários

Respondeu 11/06/2010 em 15:23
fonte usuário

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