Nad*_*Rub 5 xcode cocoa-touch fairplay ios
我需要在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
Run Code Online (Sandbox Code Playgroud)
Above对于我使用Xcode手动构建的应用程序非常有用,但是,当使用从AppStore下载的IPA时,这不适用于以下设备日志错误:
<Debug>: AppleFairplayTextCrypterSession::fairplayOpen() failed, error -42112
Run Code Online (Sandbox Code Playgroud)
检查应用程序的'Mach-O'可执行文件,我已经验证相关体系结构的"代码签名"部分已完全更改(通过'signcode'工具).
来自AppStore的应用程序不仅仅是签名,二进制文件也是加密的.
App Store二进制文件由开发人员和Apple签署.这会加密二进制文件,以便需要解密密钥才能使二进制文件可读.当iOS执行二进制文件时,解密密钥用于将二进制文件解密为可读状态,然后将其加载到内存中并执行.iOS可以通过LC_ENCRYPTION_INFO MachO加载命令的cryptid struture成员告知二进制文件的加密状态.如果cryptid是非零值,则二进制加密.
| 归档时间: |
|
| 查看次数: |
950 次 |
| 最近记录: |