Update 'Kuwo'

jixunmoe 2023-03-31 14:49:10 +00:00
parent bf34e00243
commit 3ca325ffe4

14
Kuwo.md

@ -31,7 +31,7 @@
内部名称为 `KwPocoVersion``EncryptVersion`
(内部) 加密版本为 `3` 时,当作未加密文件处理。猜测下个加密版本可能会使用 `4`
- `0x18`: `u32,le` 资源 ID同之前版本。写出时实际写出的是 `u64` 数值。
- `0x30`: `char[?]` 缓冲区,读入字符到一个类型为 `std::string` 的变量内。
- `0x30`: `char[?]` 文件格式,读入字符到一个类型为 `std::string` 的变量内。
在该样本的情况会读入 `11` 字节并储存。
- `0x68`: `u8` VIP 资源类型,见下表;
@ -68,3 +68,15 @@
1. 读取文件头,校验加密版本是否为 `2`
2. 使用读入的 `ekey` 进行解密,解密时的 `offset``file_offset - 1024`
3. 使用 QQ 音乐同款 `QMC2::MAP``QMC2::RC4` 进行解密 (取决于密钥长度)。
### ekey 缓存
该逻辑在安卓的 Java 端:
```java
public static String get_cached_file_ekey(long res_id, String format) {
return MMKV.ReadMMKVString("sec_ekey", res_id + "-" + format.toLowerCase(), "");
}
```
其中 `format` 为文件格式,该样本的值为 `"20900kmflac"``res_id` 则是资源 ID`226743561`