代码之家  ›  专栏  ›  技术社区  ›  DGentry

分析MIPS二进制文件:是否有用于分析二进制数据的python库?

  •  11
  • DGentry  · 技术社区  · 16 年前

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

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

    我更喜欢有一个包,允许我从Python代码本地查找内容,而不需要分叉另一个进程。我在python.org上没有提到libdwarf、libelf或libbfd,在dwarfstd.org上也没有提到python。

    是否有合适的模块?

    6 回复  |  直到 10 年前
        1
  •  4
  •   Eli Bendersky    11 年前

    请检查 pyelftools -一个新的纯Python库打算这样做。

        2
  •  8
  •   Philippe Ombredanne    11 年前

    你可能对矮人图书馆感兴趣 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
  •  4
  •   Ber    15 年前

    你应该给 Construct 尝试一下。将二进制数据解析为Python对象非常有用。

    甚至还有一个例子 ELF32 文件格式。

        4
  •  3
  •   Douglas Leeder    16 年前

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

        5
  •  3
  •   Craig McQueen Dr. Watson    15 年前

    我一直在使用 Construct . 目前相当粗糙,解析速度很慢。但我想我至少应该让你知道。它可能适合你的需要,需要一些工作。

    我有Mercurial中的代码,托管在BitBucket:

    构建 是一个非常有趣的图书馆。DWARF是一种复杂的格式(我正在发现),它将构造推向了我认为的极限。

        6
  •  2
  •   Brian    14 年前

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