Анализ двоичных файлов MIPS:существует ли библиотека Python для анализа двоичных данных?

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

  •  09-06-2019
  •  | 
  •  

Вопрос

Я работаю над утилитой, которая должна преобразовывать шестнадцатеричные адреса в символическое имя функции и номер строки исходного кода в двоичном файле.Утилита будет работать в Linux на платформе x86, однако анализируемые ею двоичные файлы будут предназначены для встраиваемой системы на базе MIPS.Двоичные файлы MIPS имеют формат ELF, в котором для символьной отладочной информации используется DWARF.

В настоящее время я планирую разветвить objdump, передав список шестнадцатеричных адресов и анализируя выходные данные, чтобы получить имена функций и номера строк исходного кода.Я скомпилировал objdump с поддержкой двоичных файлов MIPS, и он работает.

Я бы предпочел иметь пакет, позволяющий мне искать информацию непосредственно в коде Python, не разветвляя другой процесс.Я не могу найти никаких упоминаний о libdwarf, libelf или libbfd на python.org, а также никаких упоминаний о python на dwarfstd.org.

Есть ли где-нибудь подходящий модуль?

Это было полезно?

Решение

пожалуйста, проверьте pyelftools — новая чистая библиотека Python, предназначенная для этого.

Другие советы

Возможно, вас заинтересует библиотека DWARF с сайта 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)

Вы должны дать Построить попытка.Очень полезно анализировать двоичные данные в объекты Python.

Есть даже пример ЭЛЬФ32 формат файла.

Я ничего не знаю, но если все остальное не поможет, вы можете использовать cтипы напрямую использовать libdwarf, libelf или libbfd.

Я разрабатываю парсер DWARF, используя Построить.В настоящее время довольно грубо, и синтаксический анализ идет медленно.Но я подумал, что должен хотя бы сообщить тебе.Это может удовлетворить ваши потребности, приложив немного усилий.

У меня есть код в Mercurial, размещенный на Bitbucket:

Построить очень интересная библиотека.DWARF — это сложный формат (насколько я понимаю), и я думаю, что он доводит Construct до предела.

хачиор это еще одна библиотека для анализа двоичных данных

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top