(*/ω\*)

マジやばくね

Tinko

@Tinko3年前

2016-09-24
22:43
PlayStation·我就是这么丧心病狂 Tinkoの日常

关于 初音ミク -Project DIVA- F 2nd 以来长久的未解加密DIVAFILE

其实我也不敢确定我们是不是最先解开这个加密的,但是→_→我们在GayHub,Google均没有找到更多的相关资料。


关于DIVAFILE > 序


三年前,PJD F完全拆包毫无压力,明文谱面也造就了诸多机器人全连和其他黑科技。一年之后,F 2ND发售。在F 2ND当中,一个“全新”的文件类型,magic number为DIVAFILE的加密文件把所有的谱面文件全部加密,自此就是两年。
期间也自己尝试过反编译,在成功解密EBOOT之后用了Hopper Disassembler去尝试看懂这些,奈何只看到了幻数却看不懂PowerPC汇编,一放又是一年半。
前些日子,另一位大神通过贴吧私信找到我提起了当年的DIVAFILE解密事情。在进一步交流之后→_→

我们发现一个问题→_→

大神解密EBOOT的时候出错了,连幻数都看不到。

然后我就直接给了他正确的ELF,于是就有了→_→https://github.com/s117/DIVAFILE_Tool

其实说来也巧,大神要是当初正确解开了SELF,也许压根就没我什么事情了😂


关于DIVAFILE > 正文


DIVAFILE结构其实很简单。文件头长度16字节,前8字节为幻数”DIVAFILE”,随后8字节的内容是两个以小字节序存储的32位无符号整型,分别为PAYLOAD(密文)长度以及原文件长度。

从偏移量 0x10 开始,也就是紧随文件头,之后的长度为文件头中第一个32位无符号整数的内容即为被加密的密文。根据早期的逆向结果的猜测(真的是猜测!5000多行汇编真要看完看到啥时候去啊)以及推测之后的重加密比对,大神最终确认其加密方式为 AES-128-ECB-NullPadding ,AES 密钥为 66696C65206163636573732064656E79 ,对应ASCII ‘file access deny’ 。可以,这个密钥很SEGA。

至此,DIVAFILE的解析和重加密,完全告破。


关于DIVAFILE > 工具


Windows平台二进制加解密工具下载地址:
https://github.com/s117/DIVAFILE_Tool/releases

DIVAFILE_Tool [参数:e或c(必选)] [源文件路径(必选)] [输出路径(必选)]

e – 解密 (extract)

c – 加密 (create)

我们在这个工程中使用了kokketiny-AES128-C来执行AES的加解密行为。

开源协议参见GtiHub页面

关于 初音ミク -Project DIVA- F 2nd 以来长久的未解加密DIVAFILE