Analizing MIPS binaries: is there a Python library for parsing binary data?

萝らか妹 提交于 2019-12-18 11:39:09

问题


I'm working on a utility which needs to resolve hex addresses to a symbolic function name and source code line number within a binary. The utility will run on Linux on x86, though the binaries it analyzes will be for a MIPS-based embedded system. The MIPS binaries are in ELF format, using DWARF for the symbolic debugging information.

I'm currently planning to fork objdump, passing in a list of hex addresses and parsing the output to get function names and source line numbers. I have compiled an objdump with support for MIPS binaries, and it is working.

I'd prefer to have a package allowing me to look things up natively from the Python code without forking another process. I can find no mention of libdwarf, libelf, or libbfd on python.org, nor any mention of python on dwarfstd.org.

Is there a suitable module available somewhere?


回答1:


Please check pyelftools - a new pure Python library meant to do this.




回答2:


You might be interested in the DWARF library from 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)



回答3:


You should give Construct a try. It is very useful to parse binary data into python objects.

There is even an example for the ELF32 file format.




回答4:


I don't know of any, but if all else fails you could use ctypes to directly use libdwarf, libelf or libbfd.




回答5:


I've been developing a DWARF parser using Construct. Currently fairly rough, and parsing is slow. But I thought I should at least let you know. It may suit your needs, with a bit of work.

I've got the code in Mercurial, hosted at bitbucket:

  • http://bitbucket.org/cmcqueen1975/pythondwarf/
  • http://bitbucket.org/cmcqueen1975/construct/ (necessary modifications to Construct library)

Construct is a very interesting library. DWARF is a complex format (as I'm discovering) and pushes Construct to its limits I think.




回答6:


hachior is another library for parsing binary data



来源:https://stackoverflow.com/questions/45954/analizing-mips-binaries-is-there-a-python-library-for-parsing-binary-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!