因此,我一直致力于从 Nintendo DS 游戏 Pokemon Mystery Dungeon: Explorers of Sky 中反转几种文件格式。
到目前为止,大多数格式都非常容易反转,直到我偶然发现了一种使用标题的压缩格式,到目前为止,我在 DS 上的其他游戏的任何其他压缩文件中从未见过(我并不是很擅长反转)。 .
它的幻数是PKDPXor 0x50, 0x4B, 0x44, 0x50, 0x58。这是标题:
幻数之后的 2 个字节是文件长度。不过,将文件长度仅存储在 2 个字节上有点奇怪。尤其是当我到目前为止看到的所有其他格式都主要使用 4 字节整数时……我想知道它是否不是 GBA 游戏中使用的旧压缩格式。鉴于之前游戏的大量数据,对于 GBA,在本游戏中被重新使用。
但是,我仍然不知道如何处理这种格式。我没有从 NDS 黑客场景中找到任何关于这些的东西,除了人们提到他们以前从未见过这种格式,或者相反,人们只是谈论它,好像它是一种非常明显的格式。
据我所知,NDS 游戏以使用 huffman 和 lz 压缩,甚至 rle 着称,但我真的怀疑这是 rle,因为它可能不是图像,而且我怀疑纯数据格式会从使用 rle 压缩中获得很多好处应用到它.. 但是,我不是压缩方面的专家,否则我不会在这里发布这个 XD。
需要注意的一件事是下面的 SIR0 幻数,0x53, 0x49, 0x52, 0x30。SIR0 是我熟悉的一种格式,在幻数之后有 2 个 4bytes 指针,指向文件末尾的一些文件结构相关数据。因此,如果这些不是太混乱,就像 SIR0 幻数一样,它可以给出解压缩文件大小的一个不错的主意,给出或占用几百个字节。
然而,现在没有迹象表明那些没有被破坏,或者第一个值在哪里结束,另一个从哪里开始......
在这一点上,欢迎任何信息的花絮!
编辑: 我还发现,DS 具有内置的 LZ10 压缩处理,但是开发人员通常可以制作自己的“自定义”压缩并自行完成。但是,鉴于它是在 DS 生命周期即将结束时制造的,它可能只是“定制”的 LZ11、LZSS 或其他变体。
