有哪些工具可以帮助解码未知的二进制数据格式?
我知道Hex Workshop和010 Editor都支持结构.对于已知的固定格式,这些在一定程度上是可以的,但是对于任何更复杂的东西都很难使用,特别是对于未知格式.我想我正在寻找一个脚本语言或可编写脚本的GUI工具的模块.
例如,我希望能够从有限的已知信息中找到数据块内的结构,这可能是一个神奇的数字.一旦我找到了一个结构,然后按照已知的长度和偏移字来寻找其他结构.然后以有意义的方式递归和迭代地重复此操作.
在我的梦想中,甚至可能根据我已经告诉系统的内容自动识别可能的偏移量和长度!
以下是一些提示:
根据我的经验,交互式脚本语言(我使用Python)可以提供很大的帮助.您可以编写一个简单的框架来处理二进制流和一些简单的算法.然后你可以编写脚本来获取二进制文件并检查各种内容.例如:
对各个部分进行一些统计分析.例如,随机数据会告诉您这部分可能已经过压缩/加密.零可能意味着零件之间的填充.分散的零可能表示整数值或Unicode字符串等.尝试发现各种偏移量.尝试将二进制的部分转换为2或4字节整数或浮点数,打印它们,看看它们是否有效.编写一些函数来搜索数据中的重复或非常相似的部分,这样您就可以轻松找到标题.
尝试找到尽可能多的字符串,尝试不同的编码(c字符串,pascal字符串,utf8/16等).有一些很好的工具(我认为Hex Workshop有这样的工具).字符串可以告诉你很多.
祝好运!
对于Mac OS X,有一个新的伟大工具甚至比我的iBored更好:Synaliyze It!(http://www.synalysis.net/)
与iBored相比,它更适合非阻塞文件,同时还可以完全控制结构,包括脚本性(使用Lua).它也更好地可视化结构.
图皮尼 ; 根据我的知识,不能直接从微软研究院获得,但是有一篇关于这个工具的论文可能对想要编写类似程序的人感兴趣(也许是开源的):
Tupni:输入格式的自动逆向工程(@ ACM数字图书馆)
抽象
最近的工作已经确定了协议或文件格式规范的自动逆向工程的重要性.但是,以前工具反向设计的格式错过了对安全应用程序至关重要的重要信息.在本文中,我们介绍了Tupni,这是一种可以使用丰富的信息(包括记录序列,记录类型和输入约束)对输入格式进行反向工程的工具.Tupni可以通过多个输入推广格式规范.我们已经实现了Tupni的原型,并以10种不同的格式对其进行了评估:五种文件格式(WMF,BMP,JPG,PNG和TIF)和五种网络协议(DNS,RPC,TFTP,HTTP和FTP).Tupni识别出测试输入中的所有记录序列.我们还表明,通过聚合多个WMF文件,Tupni可以为WMF推导出更完整的格式规范.此外,我们通过使用它为zeroday漏洞签名生成提供的丰富信息来演示Tupni的实用性,这是以前的逆向工程工具无法实现的.
我最近发布的自己的工具"iBored"可以完成部分工作.我编写了可视化和调试文件系统格式(UDF,HFS,ISO9660,FAT等)的工具,并实现了搜索,复制以及后来的结构和模板支持.结构支持非常简单,模板是一种动态识别结构的方法.
整个过程可以用Visual BASIC方言编程,允许您测试值,读取特定块等等.
该工具是免费的,适用于所有平台(Win,Mac,Linux),但由于它是我刚刚向公众发布以共享它的个人工具,因此没有太多记录.
但是,如果您想尝试一下,并希望提供反馈,我可能会添加更多有用的功能.
我甚至开源它,但由于它是用REALbasic编写的,我怀疑很多人会加入这样一个项目.
链接:iBored主页
我仍然偶尔使用一个名为AX,Advanced Hex Editor的旧十六进制编辑器.它现在似乎已经从互联网上消失了,尽管Google仍然可以为你找到它.我所知道的最后一个版本是版本3.4,但我实际上只使用了免费的个人版2.1.
它最有趣的功能,也是我最常用于解读各种游戏和图形格式的功能,是它的图形视图模式.这基本上只显示文件,每个字节变成一个颜色编码的像素.就像听起来那么简单,它使我的逆向工程尝试有时更容易.
我认为通过眼睛做这与进行自动分析完全相反,并且图形模式对于查找和跟踪偏移量没有多大用处......
后来的版本有一些听起来像它们可以满足你的需求的功能(脚本,规则查找器,语法生成器),但我不知道它们有多好.