关于x86:解析MIPS二进制文件:是否存在用于解析二进制数据的Python库?

关于x86:解析MIPS二进制文件:是否存在用于解析二进制数据的Python库?

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

我正在开发一个实用程序,该实用程序需要将十六进制地址解析为二进制内的符号函数名称和源代码行号。 该实用程序将在x86的Linux上运行,尽管它分析的二进制文件将用于基于MIPS的嵌入式系统。 MIPS二进制文件采用ELF格式,并使用DWARF作为符号调试信息。

我目前正计划分叉objdump,传入十六进制地址列表并解析输出以获取函数名称和源行号。 我已经编译了一个支持MIPS二进制文件的objdump,它正在工作。

我更希望有一个软件包,该软件包可以让我从Python代码中本机查找内容,而无需进行其他处理。 我在python.org上找不到libdwarf,libelf或libbfd,也没有在dwarfstd.org上提及python。

某个地方有合适的模块吗?


您可能对pydevtools的DWARF库感兴趣:

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

请检查pyelftools-旨在执行此操作的新纯Python库。


您应该尝试构建。将二进制数据解析为python对象非常有用。

甚至还有ELF32文件格式的示例。


我一直在使用Construct构建DWARF解析器。当前相当粗糙,并且解析很慢。但是我认为我至少应该让你知道。通过一些工作,它可能会满足您的需求。

我已经在Bitbucket上托管了Mercurial中的代码:

  • http://bitbucket.org/cmcqueen1975/pythondwarf/
  • http://bitbucket.org/cmcqueen1975/construct/(对Construct库的必要修改)

构造是一个非常有趣的库。 DWARF是一种复杂的格式(正如我所发现的那样),它将Construct推向了我认为的极限。


我什么都不知道,但是如果所有其他方法都失败了,则可以使用ctypes直接使用libdwarf,libelf或libbfd。


hachior是另一个用于解析二进制数据的库


推荐阅读