Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File format 在查找未知的归档文件之前,我应该知道什么?_File Format - Fatal编程技术网

File format 在查找未知的归档文件之前,我应该知道什么?

File format 在查找未知的归档文件之前,我应该知道什么?,file-format,File Format,我玩的游戏将其所有数据存储在.DAT文件中。人们在检查档案时做了很多工作。也有一些,但我不确定他们目前的状态。我认为自己在数据中翻找会很有趣,但我从未尝试过检查文件,更不用说像这样的事情了 在我开始讨论这个问题之前,我是否应该了解有关检查文件格式以提取数据的内容 编辑:我想要非常一般的提示,因为检查文件格式似乎很有趣。我希望能够采取文件X,并学习如何处理的问题,了解它 在走得太远之前,您肯定需要一个十六进制编辑器。它将让您在记事本使用的任何字体(或任何文本编辑器)中将原始数据视为数字,而不是大的

我玩的游戏将其所有数据存储在.DAT文件中。人们在检查档案时做了很多工作。也有一些,但我不确定他们目前的状态。我认为自己在数据中翻找会很有趣,但我从未尝试过检查文件,更不用说像这样的事情了

在我开始讨论这个问题之前,我是否应该了解有关检查文件格式以提取数据的内容

编辑:我想要非常一般的提示,因为检查文件格式似乎很有趣。我希望能够采取文件X,并学习如何处理的问题,了解它

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

  • 首先备份文件。一旦你限制了你所能造成的伤害,就按照Ed的建议到处看看。

    看看你的代表级别,我想一本关于十六进制数、endianness、各种数据类型表示的基础入门,以及所有这些都是多余的。当然,一个能够以十六进制显示数据的好工具是必不可少的,同样重要的是能够编写快速脚本来测试关于数据结构的复杂假设。所有这些对您来说都应该是显而易见的,但可能对其他人有所帮助,所以我想我应该提及它们。

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

    另一件事是查看一些常见的压缩技术,特别是zip和gzip,并了解它们的“签名”。这些格式中的大多数都是“自我识别”的,所以当它们开始解压缩时,它们可以进行快速的健全性检查,以确保所处理的格式是它们能够理解的

    除了加密,归档文件格式基本上是某种索引机制(目录或排序),是通过索引中的指针从归档中定位这些元素的一种方式

    由于标准压缩算法的普遍性,主要问题是找到这些块的起始位置,并尝试查找索引或目录

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

    这些是您试图在文件中查找的模式


    如果您能以某种方式获得使用相同格式的两个版本的数据,那就太好了。例如,在游戏中,您可能可以从CD中获取初始版本和更新的补丁版本。这些信息可以突出显示您要查找的信息。

    我应该在问题中提到备份。如果你在没有原始文件备份的情况下翻看一个文件,它可能会被列为“最愚蠢的事情”之一。特别是当你不知道发生了什么的时候。对不起。我意识到这是显而易见的,但即使是从事计算机行业多年的人偶尔也会忘记。时不时地看到提醒是很有帮助的。祝你的逆向工程好运!是的,但它仍然每天都在发生。