
在應(yīng)用簽名原理手動(dòng)簽名中,我們說(shuō)到了手動(dòng)簽名的步驟以及手動(dòng)簽名需要用到的相關(guān)終端命令,這一篇文章中,我們就來(lái)圖文說(shuō)明一下手動(dòng)簽名的過(guò)程。
準(zhǔn)備工作:
1.macOS 10.15.2
2.Xcode 11.3.1
3.手動(dòng)簽名的微信ipa包(Wechat7.0.2越獄版本)
4.這里我們使用個(gè)人的免費(fèi)的開發(fā)者賬號(hào)進(jìn)行開發(fā)測(cè)試
微信ipa包(Wechat7.0.2越獄版本),密碼:hyya
1. 拿到微信的越獄資源包
- 將資源包后綴ipa改成zip格式
- 解壓zip文件
- 打開資源包->Payload->WeChat顯示包內(nèi)容
- cd 到 Payload 文件夾內(nèi)
// 查看當(dāng)前項(xiàng)目的可執(zhí)行文件
codesign -d WeChat.app
// 查看簽名信息
codesign -d -v WeChat.app
// 查看更詳細(xì)的簽名信息
codesign -d -v WeChat.app

2.查看自己證書
// 查找并列出鑰匙串中可用于簽名的證書 注意這里找自己的證書
security find-identity -v -p codesigning
3.查看WeChat文件
1.查看 Payload 文件夾內(nèi)WeChat文件,選擇顯示包內(nèi)容。
2.我們可以看到一個(gè)和WeChat同名的exec類型的可執(zhí)行文件,我們重簽名簽的就是這個(gè)文件。
3.我們可以通過(guò) otool -l WeChat 命令來(lái)查看WeChat的文件信息。
4.由于信息比較多,我們可以使用管道將內(nèi)容重定向到文件中 otool -l WeChat > ~/Desktop/123.txt
5.在文件中我們查找cryptid 會(huì)發(fā)現(xiàn) cryptid后面是0,說(shuō)明WeChat文件沒(méi)有加密,非0的數(shù)字代表的app的可執(zhí)行文件是加密的,表示的是app的可執(zhí)行文件使用的是某一種加密方式為1的方式進(jìn)行的加密。
6.我們也可以用管道篩選 otool -l WeChat | grep crypt 此時(shí)可能得到2個(gè)cryptid,表明這個(gè)可執(zhí)行文件有2種架構(gòu)。通過(guò)file WeChat 查看
4.重簽名
1.將Payload文件夾和我們自己的工程項(xiàng)目放到同同一級(jí)目錄下。

2.刪除WeChat中插件(Plugin)和帶有插件的.app包(比如Watch)
3.對(duì)Frameworks里面的文件進(jìn)行重簽名。(每個(gè)都要重新簽名)
codesign -fs "Apple Development: xxx@126.com (9FX3697KS2)" ConfSDK.framework
5.注意查看執(zhí)行文件是否有可可執(zhí)行權(quán)限,如果沒(méi)有可執(zhí)行權(quán)限也是簽不成功的。chmod +x 可執(zhí)行文件(給可執(zhí)行文件添加可執(zhí)行權(quán)限)
6.對(duì)整個(gè)app重新簽名。
- 找剛創(chuàng)建的項(xiàng)目->Products->WeChat.app->show in finder ->顯示包內(nèi)容,將 embedded.mobileprovision 文件拷出,暫時(shí)先放在 Payload文件夾同級(jí)目錄下。
- 將 embedded.mobileprovision 拷貝一份放在 Payload->WeChat中,替換掉之前的文件。
- 修改 Payload->WeChat 的build id 改成我們自己的。
- 查看剛才拷出來(lái)的embedded.mobileprovision文件,找到Entitlements, 使用命令
security cms -D -i embedded.mobileprovision - 在Xcode中新建plist文件
entitlements.plist,將剛才看的權(quán)限dict放到新的文件中。 - 將 entitlements 文件放在Payload文件夾中,和WeChat在同一級(jí)目錄下。
- 對(duì) Payload 文件夾下的文件進(jìn)行簽名。
codesign -fs "Apple Development: xxx@126.com (9FX3697KS2)" --no-strict --entitlements=entitllements.plist WeChat.app - 此時(shí),使用
codesign -d -vv WeChat.app命令查看 簽名信息會(huì)發(fā)現(xiàn)簽名信息已改變。 - 刪除 Payload 文件夾中的權(quán)限文件,退出到 Payload 的上一級(jí)文件夾中,將 Payload 打包成ipa包。
zip -ry WeChat.ipa Payload - 打開Xcode,執(zhí)行command+shift+2,選擇剛才的ipa包,安裝。
可能出現(xiàn)的問(wèn)題:
- 第一次安裝是沒(méi)有描述文件的,需要先去信任個(gè)人開發(fā)賬號(hào)。
- 打開可能會(huì)閃退,原因是描述文件不是Xcode安裝的所以會(huì)閃退,此時(shí)使用Xcode先運(yùn)行下空工程,再次安裝app。
不清楚的地方,歡迎留言評(píng)論
應(yīng)用重簽名