iOS逆向ios逆向

再谈 iOS 重签名

2016-11-25  本文已影响598人  堕落天使Z

哪些场景需要我们自己动手去做重签名呢?举个例子,由于业务的需要,在不发布 AppStore 的情况,需要将自己的 APP 分发给外部企业用户使用,我们是不能把用我们自己企业证书打的包给到外部用户的,因为这违反了 AppStore 企业证书授权协议,一旦被苹果发现,那么这个企业下的所有 APP 可能都会被强制下架,并且永久封号。


iOS 重签名流程如下:

ipa_

其实 iOS 的重签名很简单(文件路径自定义)步骤如下:

  1. 解压 ipa 安装包
unzip YiMa-Release.ipa
  1. 删除 app 原有签名
rm -rf Payload/YiMa.app/_CodeSignature/
  1. 替换证书配置文件
cp YiMa_production_provision_profile.mobileprovision Payload/YiMa.app/embedded.mobileprovision
  1. 重签名
codesign -f -s "iPhone Distribution: Zhejiang Cainiao Supply Chain Management Co., Ltd." --entitlements entitlements.plist  Payload/YiMa.app
  1. 重新打包
zip -qr app-resigned.ipa Payload/

重签名过程中遇到的坑

  1. 在 iOS8之后,code sign 如果不添加 --entitlements entitlements.plist 参数的话,会导致重签名之后的 app 无法启动,跟踪堆栈会发现如下的 log 输出:
var/mobile/Media/PublicStaging/YiMa.app/ : Error Domain=LaunchServicesError Code=0 "The operation couldn’t be completed. (LaunchServicesError error 0.)" UserInfo=0x13f627620 {Error=ApplicationVerificationFailed, ErrorDescription=Application is missing the application-identifier entitlement.}

解决方法是创建一个 entitlements.plist 文件,参考:http://stackoverflow.com/questions/28195564/enterprise-app-deployment-doesnt-install-on-ios-8-1-3

  1. 重签名成功,但是通过 Xcode 无法安装,错误如下
6ba57f8d621b7559b59b94a37a1c53098f9ad3d1.png

这个问题困扰了了很久,原因是如果你的 APP 需要 APNs 推送,那么 在 developer.apple.com 中 创建的 App ID 必须勾选 Push Notifications 功能选项,你的 provisioning profile 文件中必须包含以下字段(可以通过 Sublime 等编辑器查看)

<key>aps-environment</key>
<string>production</string>
上一篇下一篇

猜你喜欢

热点阅读