我玩的游戏将其所有数据存储在.DAT文件中。人们在检查文件时已经完成了一些工作。还有一些现有工具,但我不确定他们目前的状态。我认为自己搜索数据会很有趣,但我从来没有试过检查过一个文件,更不用说以前这样了。

在我开始深入研究文件格式以进行数据提取之前,我应该知道什么吗?

编辑:我想提供非常一般的提示,因为检查文件格式似乎很有趣。我希望能够使用File X并学习如何解决它的学习问题。

有帮助吗?

解决方案

  1. 在你走得太远之前,你肯定想要一个十六进制编辑器。它可以让您将原始数据看作数字而不是记事本正在使用的任何字体(或任何文本编辑器)中的大空块。
  2. 尝试在您拥有的任何存档提取器(即zip,7z,rar,gz,tar等)中打开它,看看它是否只是一种重命名的文件格式(.PK3就是这样)。
  3. 在文件中的某处查找已知文件格式的标题,这将帮助您发现数据的某些部分存储位置(即搜索<!>“IPNG <!>”以查找任何文件格式(未压缩) )png文件在某处。)
  4. 如果您确实找到了存储某个数据的位置,请记下其位置和长度,并查看是否可以找到与文件开头附近的任何一个值相等的数字,这些值通常用作指针到实际数据。
  5. 有时你只需要猜测,或者直觉某个值意味着什么,如果你错了,那就继续前进吧。你无能为力。
  6. 我发现 http://www.wotsit.org 是对于已知的文件类型格式特别有用,可帮助在.dat文件中查找标题。

其他提示

首先备份文件。一旦你限制了你可以做的伤害量,就像Ed建议的那样捅。

看看你的代表级别,我想一个关于十六进制数字,字节序,各种数据类型表示的基本入门,以及所有这些都是多余的。一个可以用十六进制显示数据的好工具当然是必不可少的,编写快速脚本来测试关于数据结构的复杂假设的能力也是必不可少的。所有这些对你来说应该是显而易见的,但也许可以帮助别人,所以我想我会提到它们。

当你对内容有一些控制时,攻击未知文件格式的最好方法之一是采用差分方法。保存文件,进行小的受控更改,然后再次保存。对文件进行二进制比较以找出差异 - 最好使用可以检测插入和删除的工具。如果您正在处理加密文件,那么小的更改将引发巨大的差异。如果它只是压缩,差异将不会被本地化。如果文件格式微不足道,那么简单的状态更改将导致对文件的简单更改。

另一件事是看一些常见的压缩技术,特别是zip和gzip,并学习他们的<!>“签名<!>”。大多数这些格式都是<!>“自我识别<!>”;因此,当他们开始解压缩时,他们可以快速进行健全检查,确保他们所处理的内容采用他们理解的格式。

禁止加密,归档文件格式基本上是某种索引机制(目录或排序),以及通过索引中的指针定位归档内的那些元素的方法。

随着标准压缩算法无处不在,主要是找到这些块的起始位置,并试图搜索索引或目录。

有些人会将索引全部放在一个位置(就像文件系统那样),其他人只会在档案中的每个元素前面加上其身份信息。但最后某处,有关于从一个块到另一个块的偏移的信息,有关于数据类型的信息(例如,如果它们存储GIF文件,GIF也有签名)等等。

这些是你试图在文件中搜寻的模式。

如果以某种方式你可以使用相同的格式获得两个版本的数据,这将是很好的。例如,在游戏中,您可以从CD获得初始版本以及更新的修补版本。这些可以真正突出您正在寻找的信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top