返回资讯中心
外部精选
软件工程
#开发者实时流

UnfairPlay 工具破解苹果 FairPlay DRM,可解密 iOS 应用

来源标题:FairPlay Has Been Cracked

Go 程序 UnfairPlay 可从已注册的 Mac 中提取 FairPlay 模型,用于解密个性化 iOS IPA 文件。该工具本身不登录 Apple、不购买或下载应用,需先用 ipatool 等工具获取加密 IPA。作者称其仅用于互操作性、保存和授权研究,不纵容盗版。

Hacker News 最新theturtletalks2026/11/9 · 今天26 分钟阅读

以下正文由 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 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →