手動簽名是對破殼後的應用進行簽名,應用破殼有兩種: 一、經過越獄手機獲取破殼應用,可參考:《砸殼概述及其原理》; 二、經過PP助手
獲取越獄應用便可。 將砸殼應用放到桌面或其餘方便操做的地方,當前使用的是微信應用:xcode
一、建立一個WeChat
工程,本測試中使用的是xcode
自動生成的證書和描述文件,也可使用建立的證書和描述文件,由於都是從蘋果服務器申請獲取的,參考《應用簽名-簽名原理》,因此可以對APP
進行手動簽名。接入真機並編譯,獲取.app
中的描述文件。以下圖:bash
二、右鍵.app
顯示包內容複製embedded.mobileprovision
到桌面備用,使用命令查看描述文件中的權限配置(Entitlements
下的爲權限配置):服務器
security cms -D -i embedded.mobileprovision
複製代碼
權限文件部分:微信
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>48HJPW679W.com.yahibo.WeChat</string>
<key>keychain-access-groups</key>
<array>
<string>48HJPW679W.*</string>
</array>
<key>get-task-allow</key>
<true/>
<key>com.apple.developer.team-identifier</key>
<string>48HJPW679W</string>
</dict>
複製代碼
三、建立一個plist
權限文件,並將embedded.mobileprovision
中的權限文件複製到plist
中,用來對砸殼應用重簽名。架構
四、將權限文件移動到桌面或其餘方便操做的地方,並將embedded.mobileprovision
文件加入到砸殼應用包中(.app
右鍵顯示包內容)。以下圖:app
五、修改砸殼應用中包中info.plist
的惟一標識:ide
六、給可執行文件執行權限post
chmod +x WeChat
複製代碼
七、進入到桌面砸殼應用,由於對Watch
中的app
沒法簽名,因此直接刪除,Plugins
中插件沒法被驗證不能使用,因此須要刪除。 Watch
文件(刪除):測試
PlugIns
文件(刪除):spa
八、進入Frameworks
(.app
中的文件)文件中對全部庫重簽名。 1)查看當前安裝的證書
security find-identity -v -p codesigning
複製代碼
2)使用可用證書對每個庫簽名
codesign -fs "iPhone Developer: yahibo@qq.com (64R6BCB698)" ProtobufLite.framework
複製代碼
注意:簽名證書要與工程中使用的證書保持一致
簽名使用的證書:
對Frameworks
下的全部庫重簽名:
九、簽名APP
,返回桌面,用已經建立好的權限文件對.app
從新簽名
codesign -fs "iPhone Developer: yahibo@qq.com (64R6BCB698)" --no-strict --entitlements=Entitlements.plist Payload/WeChat.app
複製代碼
在建立工程時自動生成的描述文件中已經包含了測試設備id
,簽名後app
便可安裝到測試設備上;若是想添加多臺設備,能夠本身建立證書,建立描述文件時添加須要安裝的設備,重簽名使用該證書便可。
安裝: 一、簽名完以後能夠放在xcode
中替換原有的.app
,直接運行;以下圖:
二、打包APP,經過Xcode->window devices
安裝ipa
包。打包命令以下:
zip -ry WeChat.ipa Payload
複製代碼
安裝ipa
:
應用簽名步驟以下:
PP助手
或越獄手機
中獲取解密ipa包
;.app包
中的描述文件;en.plist
權限文件;ipa包
中的.app文件
,移除Plugin
插件及Watch
文件;.app/Frameworks
文件下的庫進行重簽名;2步
獲取的描述文件放入解密的.app包
下;3步
的en.plist
權限文件對整個.app包
進行重簽名;.app包
或者打包爲.ipa包
。在操做過程當中發現如下問題: 一、經過越獄手機獲取到的破殼應用,因爲手機CPU
架構不一樣(測試用iPhone5
),會致使安裝失敗; 二、建立的工程獲取描述文件時注意,要使用一手描述文件(從新編譯描述文件會發生變化,簽名APP
驗證不經過)。