因此,我一直在努力解决Nintendo DS游戏Pokemon Mystery Dungeon:Skys的几种文件格式的问题。

到目前为止,大多数格式都非常容易反转,直到我偶然发现了使用迄今为止在DS上其他游戏中其他压缩文件中从未见过的标题的压缩格式(我并非所有的倒车经验)。

其魔术数是PKDPX0x500x4B0x440x500x58。这是标头:



魔幻数字后面的2个字节是文件长度。但是,仅将文件长度存储为2个字节有点奇怪。尤其是到目前为止,我所看到的所有其他格式都主要使用4个字节的整数...
我想知道它是否不能成为GBA游戏中使用的较旧的压缩格式。鉴于GBA以前游戏的大量数据已在此游戏中重复使用。

但是,我仍然对如何处理这种格式感到困惑。在NDS骇客活动现场,我还没有发现任何有关这些内容的信息,除了人们提到他们从未见过这种格式,或者相反,人们只是在谈论它,好像这是一种非常明显的格式。

据我所知,NDS游戏因使用huffman和lz压缩甚至rle而闻名,但是我真的怀疑这是rle,因为它可能不是图像,而且我怀疑纯数据格式会从rle中获得很多好处压缩应用于它。.但是,我不是压缩方面的专家,否则我不会在这里发布XD。

要注意的一件事是那里的SIR0幻数0x530x490x520x30。 SIR0是我熟悉的一种格式,在魔幻数字之后有2个4bytes指针,指向文件末尾与某些文件结构相关的数据。因此,如果像SIR0魔术数字那样不太麻烦,则可以很好地了解解压缩的文件大小,提供或占用数百个字节。

但是,现在没有迹象表明这些值没有被破坏,或者第一个值在哪里结束,另一个值在哪里开始...

任何信息都会此时,欢迎您!
编辑:
我还发现,DS具有内置的LZ10压缩处理功能,但对于开发人员进行自己的“自定义”压缩和自己做。但是,鉴于它是在DS生命周期即将结束时制作的,因此可能只是“自定义” LZ11,LZSS或其他变体。.

评论

为什么不分析从该文件读取的代码以确定其如何解压缩此数据?

好吧,我愿意,但我不知道在哪里看。我的意思是,我得到了代码,它是ARM汇编。但是,我无法确定该文件的具体加载位置或解压缩位置。.我愿意研究该路径并了解ARM汇编以及整个过程的工作原理,但是拥有一些指针将极大地帮助您!

您确定数据已压缩吗?从您发布的部分十六进制输出来看,数据看起来不够随机而无法压缩(例如,很多0xAC,0xFE,0x2F字节)。

老实说,我不确定。压缩文件的幻数是可读的,这使我感到怀疑。但是话又说回来,某些压缩方法是否不保留数据字符串列表以及它们重复的频率?我不能说这是否是我的一个很好的假设。.我想我需要找到一些LZ10,LZ11,LZM,LZSS,LZ77压缩文件示例。.我能够在其上运行binwalk和熵从我对熵的了解有限,我无法真正分辨出它是假阳性还是好兆头。

哦,除了魔术数字之外,包含的SIR0文件的头文件的其余部分都经过修饰,因此使我相信它以某种方式进行了压缩。