binary - 帮助逆向工程二进制文件格式的工具

标签 binary reverse-engineering file-format binary-data

有哪些工具可以帮助解码未知的二进制数据格式?

我知道 Hex Workshop 和 010 Editor 都支持结构。对于已知的固定格式来说,这些在有限的范围内是可以的,但对于更复杂的东西来说很难使用,特别是对于未知的格式。我想我正在寻找脚本语言或可编写脚本的 GUI 工具的模块。

例如,我希望能够从有限的已知信息(也许是一个魔数(Magic Number))中找到数据 block 中的结构。一旦找到一个结构,然后按照已知的长度和偏移量单词来查找其他结构。然后在有意义的地方递归和迭代地重复此操作。

在我的梦想中,甚至可能根据我已经告诉系统的内容自动识别可能的偏移和长度!

最佳答案

以下是我想到的一些提示:

根据我的经验,交互式脚本语言(我使用 Python)可以提供很大的帮助。您可以编写一个简单的框架来处理二进制流和一些简单的算法。然后您可以编写脚本来获取二进制文件并检查各种内容。例如:

对各个部分进行一些统计分析。例如,随机数据会告诉您这部分可能是压缩/加密的。零可能意味着部件之间的填充。分散的零可能表示整数值或 Unicode 字符串等。尝试发现各种偏移。尝试将二进制文件的一部分转换为 2 或 4 字节整数或 float ,打印它们并查看它们是否有意义。编写一些函数来搜索数据中重复或非常相似的部分,这样您就可以轻松地发现标题。

尝试找到尽可能多的字符串,尝试不同的编码(c 字符串、pascal 字符串、utf8/16 等)。有一些很好的工具可以做到这一点(我认为 Hex Workshop 有这样的工具)。字符串可以告诉你很多信息。

祝你好运!

关于binary - 帮助逆向工程二进制文件格式的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/492751/

相关文章:

ios - 使用第 3 方库将二进制文件提交给 Apple

java - 如何在Java中将字节数组写入二进制文件

java - 一包逆向工程

c++ - c++ exe 中的时间戳是什么(使用 MIDL 的 IDL 到 TLB 文件)

python - 在 python 中读取没有标题的 .img 医学图像

python - 有ELF的PEFile吗

c++ - "Best"C++ 的输入文件格式?

Python:切片一个非常大的二进制文件

java - 如何在java中获得整数的0填充二进制表示?

unicode - 如何诊断和逆转(而非阻止)Unicode 损坏