关于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是另一个用于解析二进制数据的库


推荐阅读

    linux存储数据命令?

    linux存储数据命令?,系统,管理,数据,设备,情况,地址,工作,命令,服务,平台,Lin

    linux数据库查找命令?

    linux数据库查找命令?,位置,名称,状态,服务,软件,信息,系统,命令,名字,密码,

    linux数据库同步命令?

    linux数据库同步命令?,信息,系统,汽车,车辆,服务,工作,通信,一致,分析,数据,D

    linux二进制执行命令?

    linux二进制执行命令?,系统,工作,情况,代码,信息,位置,地址,命令,文件,目录,L

    linux建立数据库命令?

    linux建立数据库命令?,软件,系统,工作,数据,密码,工具,数据库,一致,网络,服

    linux命令进数据库?

    linux命令进数据库?,地址,系统,名字,服务,密码,命令,读法,数据库,操作系统,

    linux清空表数据命令?

    linux清空表数据命令?,系统,数据,软件,名称,不了,命令,文件,电脑,地址,位置,L

    linux拷贝数据命令?

    linux拷贝数据命令?,系统,地址,文件,数据,命令,目录,服务,基本知识,项目,密

    linux数据库检查命令?

    linux数据库检查命令?,服务,状态,地址,位置,系统,信息,命令,工作,情况,密码,

    linux命令进去数据库?

    linux命令进去数据库?,地址,服务,名字,系统,数据库,工具,基础,工作,管理,网

    linux数据库基础命令?

    linux数据库基础命令?,地址,工作,基础,系统,命令,信息,情况,工具,设备,目录,l

    linux数据共享命令?

    linux数据共享命令?,情况,系统,工具,网络,数据,软件,发行,设备,命令,文件,Lin

    命令发送数据linux?

    命令发送数据linux?,数据,地址,时间,工具,系统,设计,工作,网络,命令,综合,lin

    数据库导出命令linux?

    数据库导出命令linux?,数据,系统,名称,密码,软件,服务,情况,网上,工具,文件,L

    linux命令清空数据?

    linux命令清空数据?,服务,数据,名称,不了,百度,管理,档案,产品,命令,文件,删

    linux大数据在线命令?

    linux大数据在线命令?,工作,地址,系统,信息,管理,命令,数据,在线,目录,网络,l

    linux数据库删除命令?

    linux数据库删除命令?,软件,服务,产品,名称,系统,不了,地址,管理,电脑,命令,L

    linux数据库操作命令?

    linux数据库操作命令?,信息,系统,网络,地址,分析师,数据,名称,管理,基础,命

    linux连数据库命令?

    linux连数据库命令?,服务,地址,密码,名字,系统,软件,一致,命令,数据库,读法,

    备份数据库命令linux?

    备份数据库命令linux?,服务,网络,备份,数据,工具,设备,系统,一致,数据库,命