问题描述
我需要控制 iOS 设备上的任意应用程序,我的计划是将可执行文件注入 IPA(实现远程控制逻辑的地方),然后重新打包。
由于应用程序应该在受控环境(特定设备)中运行,我计划使用我的配置文件和我的开发证书进行重新打包/签名。
首先,我正在尝试重新打包第 3 方应用程序而不注入任何代码,这是通过以下方式完成的:
1. Unzip the existing IPA
2. Copy the provisioning profile to %APP_NAME%.app/embedded.mobileprovisioning
3. export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate"
4. signcode --force --deep -s "%Dev Cert Name%" "%Path/To/APP_NAME%.app"
5. zip the re-signed code back together
以上对于我使用 Xcode 手动构建的应用程序非常有用,但是,当使用从 AppStore 下载的 IPA 时,这不适用于以下设备日志错误:
<Debug>: AppleFairplayTextCrypterSession::fairplayOpen() failed, error -42112
检查应用程序的“Mach-O”可执行文件,我已验证相关架构的“代码签名”部分已完全更改(通过“signcode”工具)。
问题
- 为什么我不能重新打包我从 AppStore 下载的应用程序,而我手动创建的带有 Xcode 的应用程序已成功重新打包/签名?
- 如何使用我的开发证书和配置文件重新打包/签署 AppStore 应用程序?
- FairPaly 如何区分我手动生成的应用程序(使用 Xcode)和从应用商店下载的应用程序?appstore 应用程序有哪些手工制作的应用程序没有的残差?