未知的游戏数据压缩方式(Gamecube)

逆向工程 文件格式 解压
2021-07-04 07:04:50

我得到了一些我找不到任何线索的游戏压缩数据。所有压缩文件签名都以:[ SK_ASC ] 和未知的压缩方法开头

我从 RAM/Executive 文件中获得了一些信息,但仍然无法正常工作。我认为压缩是无损格式(但它不是 LZO 或 ZLIB)。谁能帮我弄清楚压缩,以及如何解压?

=== 10.25.14 添加 ===

以下是我测试过但不匹配的压缩方法列表:

  • LZ10
  • LZ11
  • LZ77
  • LZO1x-1
  • LZO1x-999
  • LZSS
  • LZW
  • LZMA
  • HUFF 块大小 4 & 8 字节
  • RLE
  • ZLIB

=== 10.26.14 添加 ===

今天我通过内存转储来分析一些东西。

首先,EMnMenu.cmp当我通过猜测它的文件名进入主菜单时可以加载压缩文件。并且有非常相似的文件未使用。( EKisokMenu.cmp, EE3Menu.cmp)

所以我尝试通过相互替换文件来检查内存转储。我得到dump_menu.ram, dump_e3menu.ram, dump_kioskmenu.ram. 通过比较三种不同的 ram dump 数据,
我发现只有特定的偏移数据发生了变化。

通过使用这种方法,我终于得到了一个通过偏移量转储的解压数据:0x80CA6980解压数据是众所周知的纹理,它是第一个以 0x00 0x20 0xAF 0x30 开头的 4 字节签名。(在这里检查纹理格式:http : //goo.gl/UqLz3m

我尝试通过压缩解压数据并与原始数据进行比较来找到压缩算法。但是我上面测试的算法不匹配。

无论如何,我通过 ram dump 和压缩数据上传了几个解压数据,所以你可以在这里查看:goo.gl/JJQfl4

  • CMP是压缩数据,始终以SK_ASC 开头
  • BIN与 CMP 相同。
  • DCMP是从内存文件中的即时副本,它是从偏移量 0x80CA6980 中提取的。
  • DMP是减去 0x80CA6980 的数据值校正,因为有太多内存报废虚拟(如果我猜对了,这是清理后的解压缩数据)

添加不适用于常规的 deflate/zlib 所有压缩级别。

== 11.09.14 ==

我发布了几个论坛来提供帮助,但数周以来都没有任何线索:(

== 11.15.14 ==

其他论坛用户对我说有适用于 IDA 的 Gamecube DOL(执行文件)插件。所以我使用它们,现在我找到了解压主/算法子程序。有人能帮我找出描述它是如何工作的吗?

(我不擅长拆卸,所以我现在正在学习)

http://goo.gl/2bQNfj

需要基于 Power PC 的拆卸技能

0个回答
没有发现任何回复~