2025-12-09 11:02:30
活动宝典
在最近的一个博客中@孤心浪子,我发现了某音乐平台缓存文件的加密方式,并成功实现了解密,还开源了相关工具:kgm_decoder_py。本文将记录我在逆向分析过程中的思路、推导以及一些有趣的发现,希望能为其他音频逆向分析爱好者提供帮助。
🎯 目标:还原被加密的缓存音频
许多音乐平台在本地缓存时,会对音频文件做一定的加密处理,防止用户直接复制使用。这次的目标是还原这种被加密的缓存文件,提取出原始的 .mp3 音频数据。
🧩 发现一:缓存文件多了 1024 字节
通过对比下载好的 .mp3 文件与缓存文件,很容易发现:
缓存文件比原始 .mp3 文件大 1024 字节;
且多个缓存文件开头这 1024 字节完全一致。
由此可以推断出,这 1024 字节并不是音频内容,而是某种标识头或用于加密解密的参数。因此,只需从第 1024 字节(0x400)开始读取,即为音频数据本体。
🧪 发现二:加密方式是循环异或
为了确定加密方式,我对比了一段加密前后的数据,发现了一个规律。
示例:
原始数据(加密前):
0x55 0x55 0x55 0x55
=> 二进制:
01010101 01010101 01010101 01010101
加密后数据:
0xA9 0xE9 0xDA 0x52
=> 二进制:
10101001 11101001 11011010 01010
