二进制要找到什么类型的序列化

Binary de-how to find, what type of serialization is it?

本文关键字:类型 序列化 什么 二进制      更新时间:2023-10-16

我有一个由程序生成的.DAT文件。程序所有者不反对解析和编辑此文件,但他不会给任何人答案。

文件主要由以这种方式定义的变量组成:

在大多数情况下:

(4 bytes - length of the var name)(var name)(4 bytes of some internal var type)(4 bytes - possibly are elements count)(X bytes of var value)

很少:

(4 bytes - length of the var name)(var name)(1 zero byte)(4 bytes of some internal var type)

所以,例如:

([4 0 0 0][name])[11 0 0 0][1 0 0 0]([9 0 0 0][Alexander])

([8 0 0 0][names])[6 0 0 0](length [3 0 0 0])([4 0 0 0][John])([4 0 0 0][Anne])([7 0 0 0][SomeGuy])

我试图查看boost二进制序列化,但它不会在文件中添加变量名,我认为使用8个字节,而不是4个字节。

没有通用方法来确定"哪种类型的序列化"。该格式的作者做出了设计决策,并达到了最终格式。实际上可能是任何事情。您可以做出有根据的猜测("反向工程"(,但是肯定要知道的唯一方法是从作者那里获得规范。尽管您声称他不介意人们操纵以这种格式存储的文件,但他拒绝提供上述规范会让我怀疑这是否真的是真的,最终意味着您可能必须坚持猜测。

要添加边界点的答案,没有必要框架(我知道(可以处理"任何"格式。该格式必须由库知道和实施。因此,您需要自己实施。