首页 > 解决方案 > 从专有存档格式中提取文件

问题描述

我目前正在对游戏进行逆向工程,以便我和我的朋友可以浏览它并编辑内容。我在修改游戏方面有很多经验,但这里的问题是,这个游戏的开发者特别使用专有存档格式,然后将其转换为 .dat 文件。从外观上看,他们从文件中删除了标题,所以当我以十六进制检查它时,那里没有运气。将文件从这里取出的最佳方法是什么?我很确定它没有加密,因为在查看十六进制时我可以看到一些文件名。任何帮助将不胜感激,如果有人能指出我正确的方向,我不介意做这项工作。

下面我附上了十六进制的前几行,我很确定标题被剥离了

前几行十六进制

这款游戏是由 Namco 为 Nintendo 制作的,他与一家名为 Now Production 的公司合作,后者似乎主要制作了游戏(或者至少是 .他们制作了一些其他 Wii 游戏,并且都以相同的方式存储在他们自己的专有存档中然后制作成一个dat文件,文件大小为700mb供参考,里面有游戏的所有文件,除了声音和过场动画(我已经提取出来了,效果很好)。

任何帮助表示赞赏,如果需要,可以提供文件。

标签: reverse-engineeringfile-typewii

解决方案


我强烈推荐一个像 010 Editor 这样的工具,因为它提供了一种非常好的方法来制作二进制模板。

但是,您想首先使用调试器查看他们加载文件的位置。加载文件后,查看它们如何解析文件。

虽然该文件为 700 MB,但解码起来相对容易。这是由于文件格式的性质。大部分复杂性都在标题中,然后您有仅包含纯数据的数据部分。

所以,

步骤 1. 在 Load 文件系统调用上设置断点,并检查它是否加载。

步骤 2. 查看程序首先查看的内容。有一个很好的变化 4442 是文件类型标识符的一部分。这方面的一个重要指标是数据库。程序员是人,喜欢在代码中开玩笑,尤其是像文件格式标识符这样的任意魔法值。您可以尝试在互联网上搜索“44 42 20 20 01 32 42 D9”的一些变体,看看其他人是否找到了这个。

第 3 步。由于“hball_ribbon am_filter force_mulforce force_dir”是纯文本。你有一个非常好的指标。知道 C 字符串以 NULL 结尾,并且唯一的主流替代方案是帕斯卡字符串,您可能知道这里有 3 个字符串。

步骤 4. 使用字符串的知识。弄清楚如何引用字符串。大多数使用 RVA 进行文件格式寻址。完成此操作后,您应该有足够的字符串开始拉动以反转大多数格式。

或者,尝试使用开源知识。查看解析 Wii 文件的模拟器或其他工具。


推荐阅读