File format 在查找未知的归档文件之前,我应该知道什么?
我玩的游戏将其所有数据存储在.DAT文件中。人们在检查档案时做了很多工作。也有一些,但我不确定他们目前的状态。我认为自己在数据中翻找会很有趣,但我从未尝试过检查文件,更不用说像这样的事情了 在我开始讨论这个问题之前,我是否应该了解有关检查文件格式以提取数据的内容 编辑:我想要非常一般的提示,因为检查文件格式似乎很有趣。我希望能够采取文件X,并学习如何处理的问题,了解它File format 在查找未知的归档文件之前,我应该知道什么?,file-format,File Format,我玩的游戏将其所有数据存储在.DAT文件中。人们在检查档案时做了很多工作。也有一些,但我不确定他们目前的状态。我认为自己在数据中翻找会很有趣,但我从未尝试过检查文件,更不用说像这样的事情了 在我开始讨论这个问题之前,我是否应该了解有关检查文件格式以提取数据的内容 编辑:我想要非常一般的提示,因为检查文件格式似乎很有趣。我希望能够采取文件X,并学习如何处理的问题,了解它 在走得太远之前,您肯定需要一个十六进制编辑器。它将让您在记事本使用的任何字体(或任何文本编辑器)中将原始数据视为数字,而不是大的
首先备份文件。一旦你限制了你所能造成的伤害,就按照Ed的建议到处看看。看看你的代表级别,我想一本关于十六进制数、endianness、各种数据类型表示的基础入门,以及所有这些都是多余的。当然,一个能够以十六进制显示数据的好工具是必不可少的,同样重要的是能够编写快速脚本来测试关于数据结构的复杂假设。所有这些对您来说都应该是显而易见的,但可能对其他人有所帮助,所以我想我应该提及它们。当您对内容有一定的控制时,攻击未知文件格式的最佳方法之一是采取差异化方法。保存一个文件,进行一个小的可控更改,然后再次保存。对文件进行二进制比较以找出差异-最好使用能够检测插入和删除的工具。如果您正在处理一个加密文件,一个小的更改将触发一个巨大的差异。如果只是压缩,差异将不会被本地化。如果文件格式很简单,状态的简单更改将导致文件的简单更改。另一件事是查看一些常见的压缩技术,特别是zip和gzip,并了解它们的“签名”。这些格式中的大多数都是“自我识别”的,所以当它们开始解压缩时,它们可以进行快速的健全性检查,以确保所处理的格式是它们能够理解的 除了加密,归档文件格式基本上是某种索引机制(目录或排序),是通过索引中的指针从归档中定位这些元素的一种方式 由于标准压缩算法的普遍性,主要问题是找到这些块的起始位置,并尝试查找索引或目录 有些将索引全部放在一个位置(就像文件系统一样),而另一些则只是在存档中的每个元素前面加上其标识信息。但在最后的某个地方,有关于从一个块到另一个块的偏移量的信息,有关于数据类型的信息(例如,如果它们存储GIF文件,GIF也有签名),等等 这些是您试图在文件中查找的模式
如果您能以某种方式获得使用相同格式的两个版本的数据,那就太好了。例如,在游戏中,您可能可以从CD中获取初始版本和更新的补丁版本。这些信息可以突出显示您要查找的信息。我应该在问题中提到备份。如果你在没有原始文件备份的情况下翻看一个文件,它可能会被列为“最愚蠢的事情”之一。特别是当你不知道发生了什么的时候。对不起。我意识到这是显而易见的,但即使是从事计算机行业多年的人偶尔也会忘记。时不时地看到提醒是很有帮助的。祝你的逆向工程好运!是的,但它仍然每天都在发生。