五个函数,一条链 - Apple FairPlay DRM 的 Frida 逆向全记录
读完本文,你将获得: 掌握从 Java 层追踪到 Native 层的 Frida 动态插桩方法论(分组 hook + 二分定位) 理解 FairPlay DRM 在 Android 上的完整解密调用链:5 个函数、4 个阶段 学会识别 in-place 解密模式(输入输出共用 buffer)——这是 sample-AES 的典型特征 获得一套可复用的"7000+ 导出函数中精确定位目标"的逆向工程流程 〇、摘要 本文记录了笔者对 Apple Music for Android(v3.6.0-beta)FairPlay DRM 实现的完整逆向分析过程。目标是理解 Apple 如何在 Android 平台上保护 ALAC 无损音频,并找到从播放流中提取明文音频数据的技术路径。 核心发现: FairPlay 解密调用链还原:从 Java 层的 FootHillDecryptionKey 追踪到 Native 层的 5 个关键函数,完整还原了「初始化 → 密钥获取 → 解密上下文创建 → 逐样本解密」的四阶段生命周期 白盒 AES 入口定位:在 libandroidappmusic.so 的 7000+ 导出函数中,通过分组 hook + 二分法定位到核心解密函数 NfcRKVnxuKZy04KWbdFu***(混淆函数名),确认其 5 个参数的语义 in-place 解密确认:解密函数的输入和输出共用同一个 buffer 指针,明文直接覆盖密文——这是 sample-AES 的典型实现模式 流式 dump 验证:通过 Frida 拦截 N 函数的调用前后,将加密/解密 buffer 分别 dump 到文件,验证了解密前后数据大小一致,且解密后为裸 ALAC 样本序列 本系列文章分为三部分: ...