作为一个业余项目,我想尝试解析二进制文件(特别是 Mach-O 文件)。我知道已经存在用于此的工具 (otool),因此将其视为学习练习。
我遇到的问题是我不明白如何将找到的二进制元素转换为 python 表示形式。例如,Mach-O 文件格式以由 C 结构定义的 header 开头。第一项是 uint_32“魔数(Magic Number)”字段。当我做的时候
magic = f.read(4)
我明白了
b'\xcf\xfa\xed\xfe'
这对我来说开始有意义了。它实际上是一个 4 字节的字节数组。但是,我想将其视为代表原始魔数(Magic Number)的 4 字节 int。另一个示例是 numberOfSections 字段。我只想要由 4 字节字段表示的数字,而不是文字字节数组。
也许我在想这一切都是错误的。有人做过类似的事情吗?我是否需要编写函数来查看这些 4 字节字节数组并移位和组合它们的值以生成我想要的数字? endienness 会把我搞砸吗?任何指针都是最有帮助的。
最佳答案
看看 struct
模块:
In [1]: import struct
In [2]: magic = b'\xcf\xfa\xed\xfe'
In [3]: decoded = struct.unpack('<I', magic)[0]
In [4]: hex(decoded)
Out[4]: '0xfeedfacf'
关于python - 使用 Python 解析二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7141091/