我试图反序列化在Delphi中序列化的旧文件格式,它使用二进制分区。我对文件的结构一无所知,除了一些非常高级别的记录。
您将采取哪些步骤来解决此问题?任何工具等?
答案 0 :(得分:3)
一个好的hexeditor,并使用灰质来识别结构。
如果您提示它是什么类型的文件,您可以搜索更专业的工具。
运行unix / Linux“file”命令也可以很好(*)请参阅下面Barry的评论,了解其工作原理。它可以快速检查常见的文件类型,如使用不同扩展名隐藏的DBF,ZIP等。
(*)有第三方构建的Windows,但它们可能会滞后于版本。如果你可以在最近的* nix发行版上进行,建议这样做。
答案 1 :(得分:2)
序列化过程只是循环遍历所有已发布的属性,并将其值转换为文本文件。如果您不知道流式传输到文件的确切类,那么反序列化文件将非常困难。 (如果不是不可能的话)
答案 2 :(得分:1)
首先是一个好的十六进制编辑器。如果在没有缓冲的情况下读取文件(例如直接从TFileStream读取),则在使用SysInternals的ProcMon时可以获得一些信息。您可以准确地查看在哪些块中读取的数据,从而更快地确定已识别的结构之间的边界。