iOS App 重签名步骤
1.准备材料:
1、本机中可用于签名的证书,个人证书就可以了,以下简称SignA
查询本机中可用于签名的证书,终端命令:security find-identity -v -p codesigning
,效果如下,双引号内部的就是签名证书的名称,此处假设签名证书名称为"SignA

2、myzip软件
3、砸过壳的ipa包;此处使用的ipa包为"微信-7.0.8.ipa
4、用SignA签名可在真机运行的任意demoA
2.删除插件
1.使用myzip解压ipa,进入到Payload/WeChat.app/
2.删除PlugIns文件夹中的所有文件
3.删除Watch文件夹中的所有文件
3.重签名framework
进入到Payload/WeChat.app/Frameworks/文件夹,用SignA对Frameworks文件夹中的所有.framework重签名,终端命令:
codesign -fs "签名证书名称(SignA)" 文件名
4.真机信任证书
1.运行demoA,在设置-通用-设备管理-信任证书SignA即可
5.描述文件
1.demoA编译成功后,在demoA.app中会生成描述文件embedded.mobileprovision
2.将embedded.mobileprovision拷贝到Payload/WeChat.app/目录下
3.获取embedded.mobileprovision中的权限信息,终端命令:security cms -D -i embedded.mobileprovision
4.找到key为Entitlements对应的值,如下:

5.新建一个entitlements.plist文件,将图2
中的内容复制到其中,并将entitlements.plist放到Payload文件夹中,与WeChat.app 同层级
6.Bundle identifier
进入到Payload/WeChat.app/文件夹,找到Info.plist,修改其中的Bundle identifier为demoABundle identifier的
7.重签名app
1.进入到Payload文件夹
2.重签名app,终端命令:codesign -fs "SignA(签名证书名)" --no-strict --entitlements=entitlements.plist(步骤5-5对应的权限文件名) WeChat.app(app名)
。出现replacing existing signature
便代表签名成功
8.Xcode安装重签名后的app
Xcode -> Window -> Device And Simulators -> Devices -> INSTALLED APPS -> + -> open
