Анализ двоичных файлов MIPS:существует ли библиотека Python для анализа двоичных данных?
Вопрос
Я работаю над утилитой, которая должна преобразовывать шестнадцатеричные адреса в символическое имя функции и номер строки исходного кода в двоичном файле.Утилита будет работать в 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)
Я ничего не знаю, но если все остальное не поможет, вы можете использовать cтипы напрямую использовать libdwarf, libelf или libbfd.
Я разрабатываю парсер DWARF, используя Построить.В настоящее время довольно грубо, и синтаксический анализ идет медленно.Но я подумал, что должен хотя бы сообщить тебе.Это может удовлетворить ваши потребности, приложив немного усилий.
У меня есть код в Mercurial, размещенный на Bitbucket:
- http://bitbucket.org/cmcqueen1975/pythondwarf/
- http://bitbucket.org/cmcqueen1975/construct/ (необходимые изменения в библиотеке Construct)
Построить очень интересная библиотека.DWARF — это сложный формат (насколько я понимаю), и я думаю, что он доводит Construct до предела.
хачиор это еще одна библиотека для анализа двоичных данных