
UnfairPlay 工具破解苹果 FairPlay DRM,可解密 iOS 应用
来源标题:FairPlay Has Been Cracked
Go 程序 UnfairPlay 可从已注册的 Mac 中提取 FairPlay 模型,用于解密个性化 iOS IPA 文件。该工具本身不登录 Apple、不购买或下载应用,需先用 ipatool 等工具获取加密 IPA。作者称其仅用于互操作性、保存和授权研究,不纵容盗版。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
UnfairPlay 可以从一台已注册的 Mac 中恢复 FairPlay 模型,并用它解密个性化的 iOS IPA。它是一个独立的 Go 程序。它不会登录 Apple、购买应用或下载 IPA,这部分你可以用 ipatool 或其他下载工具完成。请仅在你自己合法获取的应用、以及你控制的账户和设备上使用 UnfairPlay。它的用途是互操作性、保存和授权研究。作者不纵容盗版、凭据窃取、版权侵权或未经授权分发已解密应用。项目讨论与支持:UnfairPlay Discord。
go build -o unfairplay ./cmd/unfairplay
用法
首先,登录原生 Mac App Store。安装一个 iPhone 或 iPad 应用并打开一次。用同一个 Apple Account 下载一个匹配的加密 IPA。
sudo ./unfairplay setup
--app /Applications/App.app
--ipa App.ipa
大型注册数据库会向标准错误输出有界恢复进度。最终的 JSON 结果仍留在标准输出。setup 结果中包含针对匹配 IPA 的 plaintext_verified。当任何解密镜像缺少加密前哈希时,成功的 setup 也可能报告 false;这与模型是否被成功恢复并保存是两回事。保存的模型是私密的。它绑定的是 Mac App Store 注册,而不是某一个应用,因此它可以解密来自同一注册的其他个性化 IPA。请只在加密存储中备份它,绝不要分享。
./unfairplay decrypt --input AnotherApp.ipa
默认模型目录位于用户配置目录内。设置 UNFAIRPLAY_MODEL_DIR 或传入 --model 以使用其他位置。带扩展和 watch 应用的 IPA 会一次性解密。输出会保留输入的 SC_Info 许可证和 iTunesMetadata.plist,它们标识 Store 账户。若要为私人分析或授权协作创建脱敏副本,请加上 --strip-account-data:它会省略所有 SC_Info 成员,并从 iTunesMetadata.plist 中移除 Apple ID 和购买者字段。脱敏并不授权再分发该应用;上述法律和道德使用条款仍然适用。用以下命令测试而不保留明文:
./unfairplay verify --input AnotherApp.ipa
解密路径处理 ARMv6/Thumb-1、ARMv7、ARM64 和 ARM64_32/watchOS 切片。可用的加密前页哈希必须匹配;不匹配则失败关闭。没有这些表的较旧可执行文件可以解密,但会报告 plaintext_verified=false。
这需要一个为你保存的模型所属的同一 Store 注册而个性化的加密 IPA。用以下命令转换:
./unfairplay convert-ipa-macos
--input App.ipa
--model /private/path/fairplay-enrollment.bin
省略 --model 以使用已保存的模型。默认输出是 App.macos.ipa。使用 --output 选择其他路径,或用 --force 替换已有输出。该命令使用保存的版本 2 注册模型。你也可以改用匹配的私有 16 字节凭据:
chmod 600 credential.bin
./unfairplay convert-ipa-macos
--input App.ipa
--credential credential.bin
转换:基于模型的转换支持观察到的 440 字节和 448 字节私有 SINF 记录,以及恢复所使用的相同的有限追加权限几何结构。结果仍然是 IPA,不是 macOS 安装程序。macOS iOS 应用包装器或兼容安装程序必须保留以下基本布局:
App iOS.app/ WrappedBundle -> Wrapper/App.app Wrapper/App.app Wrapper/iTunesMetadata.plist
转换后的 IPA 和包装器包含私有账户许可证。请保持它们私密。此功能不会解密、修改、重签名或绕过应用内部的检查。应用仍可能拒绝 macOS、要求不可用的硬件,或依赖 macOS 上不存在的服务。
collect 和 recover 暴露两个 setup 阶段,用于诊断和归档捕获。doctor 检查捕获、IPA 或模型。
sudo ./unfairplay collect --app /Applications/App.app --ipa App.ipa --output App.capture ./unfairplay recover --capture App.capture --output App.recovery
FAQ
什么是注册?
注册是 Apple Account 在 Mac 上使用 Mac App Store 时创建的 FairPlay 状态。它链接账户、Mac 和 FairPlay 选择器。setup 将该状态转换为可复用的私有模型。
个性化 SINF:为一个 Store 注册创建的应用许可证。它标识该注册并保护应用特定的密钥。
SUPF/SUPP:签名的按可执行文件记录,用于为加密的 Mach-O 页派生密钥和 IV。应用、扩展、框架和 watch 应用可能各有一个。
SC_Info:已安装应用或 IPA 内包含其 SINF 和 SUPF/SUPP 许可证文件的目录。
系统 SC Info:私有 Mac FairPlay 状态目录。其 SIDB 和 SIDS 文件包含注册状态,而非应用内容。这些文件是私密的。不要发布或分享它们。
不。一个模型可以解密为同一注册个性化的不同 IPA。每个应用在其个性化 SINF 内仍有自己的密钥。
Apple 可能改变注册状态布局或语义表。UnfairPlay 遵循显式的 SIDB 版本、状态槽、根游标和选择器规则。未映射的格式或标签构造器路径会以错误停止恢复。在匹配 IPA 解密并通过适用的验证检查之前,它绝不会发布模型;缺失的明文哈希仍会被明确标记为未验证。
欢迎补丁和测试报告。请包含 macOS 构建、UnfairPlay 提交和一个脱敏错误。公开报告中不要包含应用标识、可识别 IPA 的测量值和私有路径。绝不要分享 SIDB、SINF、硬件标识、注册模型、已解密应用或 Apple 凭据。
可以。收集必须在已注册的 Mac 上开始。你可以在该 Mac 上运行 setup 并安全复制生成的模型,或者复制完整的私有收集包并在别处运行 recover。该包包含已安装的许可证文件、系统 SC Info 状态、内置 IOMACAddress、匹配的 IPA 和 macOS 构建元数据。然后,恢复的模型和个性化 IPA 可以在 macOS 或 Linux 上使用;
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。