簡體   English   中英

二進制反序列化-如何查找,它是什么類型的序列化?

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

我有一個程序生成的.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字節。

沒有通用的方法可以確定“什么類型的序列化”。 該格式的作者已做出設計決定,並最終確定了格式。 它實際上可以是任何東西。 您可以進行有根據的猜測(“逆向工程”),但是唯一可以確定的方法是從作者那里獲得規范。 盡管您聲稱他不介意人們操縱以這種格式存儲的文件,但是他拒絕提供上述說明使我懷疑這是否真的成立,並且最終意味着您可能必須堅持猜測。

要添加BoundaryImposition的答案,沒有一個反序列化框架(我知道)可以處理“任何”格式。 該格式必須由庫知道並實現。 因此,您需要自己實施。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM