【问题标题】:What should I know before poking around an unknown archive file for things?在寻找未知的存档文件之前我应该​​知道什么?
【发布时间】:2023-03-12 23:05:01
【问题描述】:

我玩的游戏将其所有数据存储在 .DAT 文件中。人们在检查文件时已经完成了some work。还有一些existing tools,但我不确定他们目前的状态。我认为自己在数据中四处寻找会很有趣,但我从未尝试过检查文件,更不用说以前这样的事情了。

在我一头扎进去之前,关于检查文件格式以进行数据提取,有什么我应该知道的吗?

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

【问题讨论】:

    标签: file-format


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

    【讨论】:

      【解决方案2】:

      先备份文件。一旦你限制了你可以造成的伤害量,就按照 Ed 的建议四处寻找。

      【讨论】:

      • 我应该在我的问题中提到备份。如果您在没有备份原始文件的情况下浏览文件,它可能会成为“最愚蠢的事情”之一。特别是如果你不知道发生了什么。
      • :) 对不起。我意识到这很明显,但即使是在计算机行业工作多年的人也偶尔会忘记。时不时地看到提醒会很有帮助。祝你逆向工程好运!
      • 理所当然,但它仍然每天都在发生。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          另一件事是查看一些常见的压缩技术,尤其是 zip 和 gzip,并了解它们的“签名”。这些格式中的大多数都是“自我识别”的,所以当他们开始解压缩时,他们可以快速检查他们正在处理的内容是否是他们理解的格式。

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

          随着标准压缩算法的普及,主要是找到这些块从哪里开始,并尝试寻找索引或目录。

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-26
            • 1970-01-01
            • 1970-01-01
            • 2011-05-11
            • 2018-05-06
            相关资源
            最近更新 更多