我玩的游戏将其所有数据存储在.DAT文件中。人们在检查文件时已经some work完成了。还有一些existing tools,但我不确定他们目前的状态。我认为自己搜索数据会很有趣,但我从来没有试过检查过一个文件,更不用说以前这样了。
在我开始深入研究文件格式以进行数据提取之前,我应该知道什么吗?
编辑:我想提供非常一般的提示,因为检查文件格式似乎很有趣。我希望能够使用File X并学习如何解决它的学习问题。答案 0 :(得分:8)
答案 1 :(得分:3)
首先备份文件。一旦你限制了你可以做的伤害量,就像Ed建议的那样捅。
答案 2 :(得分:3)
看看你的代表级别,我想一个关于十六进制数字,字节序,各种数据类型表示的基本入门,以及所有这些都是多余的。一个可以用十六进制显示数据的好工具当然是必不可少的,编写快速脚本来测试关于数据结构的复杂假设的能力也是必不可少的。所有这些对你来说应该是显而易见的,但也许可以帮助别人,所以我想我会提到它们。
答案 3 :(得分:3)
当你对内容有一些控制时,攻击未知文件格式的最好方法之一是采用差分方法。保存文件,进行小的受控更改,然后再次保存。对文件进行二进制比较以找出差异 - 最好使用可以检测插入和删除的工具。如果您正在处理加密文件,那么小的更改将引发巨大的差异。如果它只是压缩,差异将不会被本地化。如果文件格式微不足道,那么简单的状态更改将导致对文件的简单更改。
答案 4 :(得分:3)
另一件事是看一些常见的压缩技术,特别是zip和gzip,并学习它们的“签名”。大多数这些格式都是“自我识别”的,因此当他们开始解压缩时,他们可以快速进行健全检查,确保他们所处理的内容采用他们理解的格式。
禁止加密,归档文件格式基本上是某种索引机制(目录或排序),以及通过索引中的指针定位归档内的那些元素的方法。
随着标准压缩算法无处不在,主要是找到这些块的起始位置,并试图搜索索引或目录。
有些人会将索引全部放在一个位置(就像文件系统那样),其他人只会在档案中的每个元素前面加上其身份信息。但最后某处,有关于从一个块到另一个块的偏移的信息,有关于数据类型的信息(例如,如果它们存储GIF文件,GIF也有签名)等等。
这些是你试图在文件中搜寻的模式。
如果以某种方式你可以使用相同的格式获得两个版本的数据,这将是很好的。例如,在游戏中,您可以从CD获得初始版本以及更新的修补版本。这些可以真正突出您正在寻找的信息。