逆向工程 Roland TR-8S 套件文件格式 .t8k

逆向工程 二元分析 文件格式 CRC 二元诊断 未知数据
2021-06-21 01:59:18

我试图找出 Roland TR-8S 鼓机用于导入/导出架子鼓的文件格式。我的目标是替换套件中的样本 (PCM) 数据。它是一种专有的二进制格式,文件的扩展名为.t8k. 这是我到目前为止想出来的:

格式包括与一个四个字符魔码启动每个(多段的NAMETONEWAVESMPL等等)。SMPL首先关注该部分。下面是一个例子:

00000868  53 4d 50 4c 00 00 02 00  cd cd e8 7e 3c db dc dd  |SMPL.......~<...|
00000878  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00020878  53 4d 50 4c 00 00 02 00  cd cd e8 7e 3c db dc dd  |SMPL.......~<...|

在 4 字节幻码之后,有一个 32 位值 (0x20000),表示从 0x878 开始的 PCM 数据的长度。在此示例中,PCM 数据全为零。如果原始样本数据短于 0x20000,它将用零填充。

接下来的四个字节 ( cd cd e8 7e) 是整个 PCM 数据的 CRC32(示例中为 0x20000 零)。

CRC32 ( 3c db dc dd)之后的四个字节是未知的。每当 PCM 数据的整个零填充块发生变化时,它们就会发生变化。与 CRC32 一样,如果仅零填充字节数发生变化,它们不会发生变化,并且它们似乎不受SMPL外因素的影响如果这些字节的值不正确,则将鼓组导入鼓机将失败并显示一般错误消息。

我尝试过CRC RevEng,但没有找到算法。此外,未知字节似乎不太可能是额外的 CRC。

这四个未知字节的用途可能是什么?有什么方法可以帮我找出来吗?

1个回答

在寻找复杂的事情失败后,我试着像软件开发人员一样思考,我发现了这一点:

“534d504c00000200cdcde87e”的CRC32 = 0xdddcdb3c