二进制序列化文件 - Delphi

时间:2010-10-11 09:32:01

标签: delphi reverse-engineering serialization binary-serialization

我试图反序列化在Delphi中序列化的旧文件格式,它使用二进制分区。我对文件的结构一无所知,除了一些非常高级别的记录。

您将采取哪些步骤来解决此问题?任何工具等?

3 个答案:

答案 0 :(得分:3)

一个好的hexeditor,并使用灰质来识别结构。

如果您提示它是什么类型的文件,您可以搜索更专业的工具。

运行unix / Linux“file”命令也可以很好(*)请参阅下面Barry的评论,了解其工作原理。它可以快速检查常见的文件类型,如使用不同扩展名隐藏的DBF,ZIP等。

(*)有第三方构建的Windows,但它们可能会滞后于版本。如果你可以在最近的* nix发行版上进行,建议这样做。

答案 1 :(得分:2)

序列化过程只是循环遍历所有已发布的属性,并将其值转换为文本文件。如果您不知道流式传输到文件的确切类,那么反序列化文件将非常困难。 (如果不是不可能的话)

答案 2 :(得分:1)

首先是一个好的十六进制编辑器。如果在没有缓冲的情况下读取文件(例如直接从TFileStream读取),则在使用SysInternals的ProcMon时可以获得一些信息。您可以准确地查看在哪些块中读取的数据,从而更快地确定已识别的结构之间的边界。