分析MIPS二进制文件:有没有Python库可用于解析二进制数据?

12 投票
6 回答
6694 浏览
提问于 2025-04-11 09:15

我正在开发一个工具,它需要把十六进制地址转换成二进制文件中的函数名称和源代码行号。这个工具会在Linux系统上运行,使用的是x86架构,但它分析的二进制文件是针对基于MIPS的嵌入式系统的。这些MIPS二进制文件采用ELF格式,并使用DWARF格式来存储符号调试信息。

目前,我打算修改objdump这个工具,传入一系列十六进制地址,然后解析输出结果,以获取函数名称和源代码行号。我已经编译了一个支持MIPS二进制文件的objdump,并且它可以正常工作。

不过,我更希望能有一个包,让我可以直接在Python代码中查找这些信息,而不需要再启动一个新的进程。我在python.org上没有找到关于libdwarf、libelf或libbfd的任何信息,也没有在dwarfstd.org上看到与Python相关的内容。

请问有没有合适的模块可以使用呢?

6 个回答

4

你可以试试Construct这个工具。它非常有用,可以把二进制数据转换成Python中的对象。

这里面还有一个关于ELF32文件格式的例子。

9

你可能会对来自 pydevtools 的 DWARF 库感兴趣:

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

请查看一下 pyelftools - 这是一个全新的纯Python库,专门用来做这个的。

撰写回答