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

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

  •  09-06-2019
  •  | 
  •  

Pergunta

Estou trabalhando em um utilitário que precisa resolver endereços hexadecimais para um nome de função simbólica e um número de linha de código-fonte em um binário.O utilitário será executado em Linux em x86, embora os binários que ele analisa sejam para um sistema embarcado baseado em MIPS.Os binários MIPS estão no formato ELF, usando DWARF para informações de depuração simbólica.

Atualmente, estou planejando bifurcar o objdump, passando uma lista de endereços hexadecimais e analisando a saída para obter nomes de funções e números de linha de origem.Compilei um objdump com suporte para binários MIPS e está funcionando.

Eu preferiria ter um pacote que me permitisse pesquisar coisas nativamente no código Python sem bifurcar outro processo.Não consigo encontrar nenhuma menção a libdwarf, libelf ou libbfd em python.org, nem qualquer menção a python emnanstd.org.

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

Foi útil?

Solução

por favor, verifique ferramentas pielf - uma nova biblioteca Python pura destinada a fazer isso.

Outras dicas

Você pode estar interessado na biblioteca DWARF de ferramentas pydev:

>>> from bintools.dwarf import DWARF
>>> dwarf = DWARF('test/test')
>>> dwarf.get_loc_by_addr(0x8048475)
('/home/emilmont/Workspace/dbg/test/main.c', 36, 0)

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

Existe até um exemplo para o ELF32 formato de arquivo.

Não conheço nenhum, mas se tudo mais falhar, você pode usar tipos para usar diretamente libdwarf, libelf ou libbfd.

Estou desenvolvendo um analisador DWARF usando Construir.Atualmente bastante difícil e a análise é lenta.Mas achei que deveria pelo menos avisar você.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.DWARF é um formato complexo (como estou descobrindo) e leva o Construct ao seu limite, eu acho.

hachior é outra biblioteca para analisar dados binários

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top