应用签名
2019-08-04 本文已影响0人
喵喵粉
这里记录3种签名方式
1.手动签名
2.手动+Xcode签名
3.sh脚本签名
1. 准备工作,下好IPA包
IPA文件- 查看IPA包的可执行文件(MachO文件)
codesign -d WeChat.app
查看IPA包的可执行文件
- 查看MachO、app的签名
codesign -d -vv WeChat.app/WeChat
codesign -d -vv WeChat.app
查看MachO的签名
查看app的签名
- 查看MachO文件是否砸壳, 重签名是在砸壳的基础上进行的,这里用的都是cryptid=0的IPA包
otool -l WeChat.app/WeChat | grep crypt
MachO文件是否砸壳
- 查看MAC上安装的证书,签名要用到
security find-identity -v -p codesigning
查看MAC上安装的证书
2. 手动签名
手动重签名步骤
进入WeChat.app,删除插件和带有插件的.app包(比如Watch和PlugIns文件夹)
对Frameworks里面的库进行重签名
给MachO文件 +x(可执行)权限
添加描述文件(新建工程,真机编译得到)
替换BundleID
通过授权文件(Entilements)重签.app包
Zip命令打包IPA包,安装Done
- 对Frameworks里面的库进行重签名
//强制替换签名
codesign –fs “证书串” 文件名
Frameworks
对Frameworks重签名
-
添加描述文件
工程目录
xcode新建oc工程, BundleID为com.zz.huxiu,然后在手机上运行一遍 !
Xcode -
替换wechat.app里面 Info.plist 的BundleID为com.zz.huxiu
WeChat的Info.plist
替换BundleID -
通过授权文件(entitlements.plist)重签.app包
编译工程拿到mobileprovision文件
通过下面命令获取到embedded.mobileprovision中的Entitlements字段
security cms -D -I embedded.mobileprovision
获取到Entitlements
Xcode中新建entitlements.plist文件,将上面的Entitlements字段复制进来
entitlements.plist
entitlements.plist
将entitlements.plist copy到wechat.app同级
copy entitlements.plist
对wechat.app签名
codesign -fs "iPhone Developer: dkdsj123@163.com (QRZLAJMA52)" --no-strict --entitlements=entitlements.plist Wechat.app
对wechat.app签名
查看签名后wechat.app的签名
codesign -d -vv WeChat.app
查看wechat.app的签名
- 打IPA包
zip -ry wechat.ipa Payload
打IPA包
wechat.ipa
安装IPA包到手机 需要信任下证书 Done
image.png
3.手动+Xcode签名
步骤(与手动签名对比 少了几个步骤:对MachO签名+打包IPA)
进入WeChat.app,删除插件和带有插件的.app包(比如Watch和PlugIns文件夹)
对Frameworks里面的库进行重签名
替换BundleID (com.zz.huxiu)
将WeChat.app替换xcode生成的app
用xcode直接运行到手机
xcode新建WeChat同名工程 bundleID为com.zz.huxiu 先在手机上跑一遍,信任下证书!
解压准备的IPA包=>WeChat.app
- 对Frameworks里面的库进行重签名
//强制替换签名
codesign –fs “证书串” 文件名
framework重签名
-
将处理好的WeChat.app替换Xcode编译的app
image.png -
Xcode运行 done
4.sh脚本签名
步骤
xcode新建工程 BundleID为com.zz.huxiu,然后在手机上运行一遍
Xcode添加脚本
工程目录新增sh、APP/ipa文件
Xcode 运行 done
xcode添加脚本
工程目录