如何分析二进制文件?

Ric*_*ald 26 binary serialization code-analysis reverse-engineering

我有一个二进制文件.我不知道它是如何格式化的,我只知道它来自delphi代码.

是否存在分析二进制文件的任何方式?

是否存在任何"模式"来分析和反序列化具有未知格式的文件的二进制内容?

Ric*_*ald 22

试试这些:

  1. 反序列化数据:分析它是如何编译你的exe(尝试文件分析器).尝试使用发现的语言反序列化二进制数据.然后以xml格式(语言独立)将其序列化,使每种编程语言都能理解
  2. 分析二进制数据:尝试保存文件的各种版本,几乎没有变化,并使用diff程序使用十六进制编辑器分析每个位的含义.将它与二进制黑客技术结合使用(如如何破解Frans Faase的二进制文件格式)
  3. 逆向工程应用程序:尝试使用逆向工程工具获取用于构建应用程序的编程语言(使用文件分析器找到).否则使用IDA Pro Disassembler等反汇编分析工具

  • 好的,所以这个问题永远不会有答案!如果需要,请复制并粘贴此答案.我很乐意给你答案!你也会很开心!我对声誉不感兴趣,我只想标出这个问题的答案.你呢?你真正感兴趣的是什么? (3认同)

aka*_*okd 11

对于我的爱好项目,我不得不对一些旧的游戏文件进行逆向工程.我的方法是:

  • 有一个好的十六进制编辑器
  • 在二进制文件中查找可读单词.注意它们的分布情况.如果它们之间的距离不变,你就知道它是一个列表.
  • 寻找2-3个随后的零.可能表示int32值.
  • 一些dwords可能是指向文件的指针.
  • 尝试识别文件中重复出现的模式.
  • 看到大量的C0-CF可能表示RLE压缩数据.


col*_*ium 8

当您了解它所代表的内容时,对二进制文件进行逆向工程是一个非常耗时的过程.如果你不知道它是什么,那就更难了.

虽然这是可能的,但你必须有一个很好的理由这样做.

第一步是在您选择的十六进制编辑器中打开它,看看是否可以找到任何英文文本,指向文件甚至应该表示的方向.从那里,谷歌"逆向工程二进制文件",有比我更有知识的人,有关于它的书面指南.


小智 5

GNU binutils的"字符串"程序非常有用.它会在文件中打印可打印字符的字符串,通常可以提供文件包含的内容或程序的线索.


Geo*_*Geo 5

如果数据代表序列化的Delphi对象,您应该开始阅读有关Delphi序列化过程的内容.如果是这种情况,我认为您最好的选择是使用Delphi加载它并继续从IDE进行分析.有关Delphi序列化的一些信息可以在这里找到.

编辑:如果文件确实包含序列化的delphi对象,那么你应该编写一个加载它的小型delphi程序,并将数据自己"转换"为中性的,如xml.如果你设法这样做,你应该检查并查看delphi是否支持序列化为xml.然后,您可以从任何语言访问这些对象.


pi3*_*pi3 5

我已经开发了Hexinator(Window和Linux)并进行了Synalyze It!(macOS)正是为此目的。这些应用程序使您可以像在其他十六进制编辑器中一样查看二进制文件,但此外,您还可以使用二进制文件格式的细节来创建“语法”。语法包含所有构造块,并用于自动解析文件。

因此,您可以保留在分析中获得的知识,并将其同时应用于多个文件。您还可以对文件格式的各个部分进行彩色编码,以便在十六进制编辑器中快速浏览。 Synalyze的屏幕截图! 专业版 解析结果显示在树形视图中,您还可以在其中轻松修改文件(应用endianness等)。