我一直致力于从《星球大战》第一集:幻影威胁中逆转文件格式。

我设法从包含音频文件的.lab文件中提取音频文件。但是我无法播放音频文件。

问题末尾提供了这些文件。

我设法在游戏的缓存中找到了一些解压缩的文件(可以播放),因此我可以选择压缩和未压缩形式的音频文件。

压缩率约为66%;即压缩文件的大小是未压缩大小的1/3。这是数据的未压缩和压缩形式的示例。 (来自BDm8906.wav和BDM8906.wv)

未压缩文件的前32个字节(魔术是riff)BDm8906.wav

52 49 46 46 DA 77 00 00 57 41 56 45 66 6D 74 20
10 00 00 00 01 00 01 00 22 56 00 00 44 AC 00 00


压缩文件的前32个字节(神奇的是INDYWV)BDM8906.wv

49 4E 44 59 57 56 22 56 00 00 10 00 00 00 01 00 
00 00 F1 2B 00 00 00 00 00 00 B6 77 00 00 00 00


通过查看一些压缩文件,我发现:

前16个字节始终相同。
后4个字节为压缩文件的大小。
后6个字节始终为零。

以下是压缩文件的十六进制转储的更详细信息:

http://imgur.com/ittjYFW

(SE不会让我上传)。

从字节25(从0开始计数)到文件末尾总是不同的。从此处到文件末尾的字节数是前面指示的压缩文件的大小。

尝试解压缩的方法:在lucas论坛和xentax论坛上的另一个人尝试将其解压缩失败。它不是wavepack。

2)对未压缩的文件尝试通用的压缩算法。 Compress,lzma,gzip甚至无法达到所报告的压缩率。

3)Binwalk在二进制文件上:当我在Windows上运行binwalk时,我发现它包含DMC(https://en.wikipedia.org/wiki/Dynamic_Markov_compression)

4)分解二进制文件并尝试查找解压缩代码的位置-这非常困难

可以在此处找到示例(两个文件,一个已加密,一个未加密):

https://www.dropbox.com/sh/jvljza0v76mvl56 / AAC41MenYP57dVHgAXY-DkSsa?dl = 0

我该如何弄清它的用途?

感谢
收割者,解压缩的文件:

22.05采样率
每个采样16位
15323采样
694 ms

游戏进行解码后的内容转换为15323 16位整数

评论

我要做的第一件事就是使用ProcMon运行游戏。检查从.lab文件读取的位置以及从.wav文件写入的位置。在这些调用中检查堆栈,以从二进制调用中找出哪些函数。整个事情可能与我对此的回答非常相似。

INDYWV似乎是LucasArts使用的专有音频文件格式。游戏星球大战:X翼联盟也使用INDYWV文件。最好的选择是按照上面@GuntramBlohm所说的做。

我不知道这是否是您要寻找的答案,但是您可以使用名为SCRUMM Revisited的应用程序将SW TPM音乐(和音效)文件解压缩为.WAV格式jsg.id.au/scumm/scummrev /index.html音乐文件位于\ music目录中,扩展名为.IMC,而.LAB文件包含许多声音效果。

顺便说一句,主要主题称为“ SQSTALK2.IMC”