问题描述
我需要控制iOS设备上的任何应用程序,我的计划是将一个可执行文件注入到IPA中(其中包含远程控制逻辑),然后重新打包。
由于应用程序应在受控环境(特定设备)中运行,因此我计划使用我的开发证书和配置文件进行重新打包/签名。
首先,我正在尝试重新打包第三方应用程序,而不注入任何代码,这是通过以下方式完成的:
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应用程序?
- FairPlay如何区分我手动制作的应用程序(使用Xcode)和从应用商店下载的应用程序?应用商店应用程序有哪些残留物,手动制作的应用程序没有?