本文章轉(zhuǎn)自:http://www.reibang.com/p/b25dad435879
謹(jǐn)幫助自己學(xué)習(xí)储矩!
一直以來,在網(wǎng)上搜索重簽名工具,搜索到的工具比如(wps重簽名助手)等,基本上都需要重置info.plist里面的包名,否則經(jīng)常失敗,但是卻看到某些提供企業(yè)簽名服務(wù)的服務(wù)商卻可以不修改包名實(shí)現(xiàn)重簽app,通過整理重簽名步驟,大概猜想一下驗(yàn)證思路,整理本文章.
分為2個(gè)模塊,分別是:
重簽名app步驟(你不需要改包名)
個(gè)人猜想不改包名可以成功原因
重簽名步驟
1? .修改ipa文件為zip格式,并且解壓,解壓完為Payload文件夾
image.png
2 .進(jìn)入Payload文件夾下? 某某.app 文件夾,顯示包內(nèi)容
image.png
3 .移除當(dāng)前目錄下的_CodeSignature文件夾
image.png
將我們用來重簽名的embedded.mobileprovision文件(來源是開發(fā)者中心賬號(hào)創(chuàng)建的并且下載的,不多講)移動(dòng)替換到目錄下
image.png
查看目錄下是否存在子工程,比如說 wedget子工程,如果存在,請(qǐng)移除(我暫時(shí)不會(huì)也沒嘗試是否帶著子工程可以簽名成功,理論上應(yīng)該可以成功,但是需要充分簽名所有的二進(jìn)制文件)
首先查看FrameWorks文件夾 找到frameWorks文件夾,查看是否存在frameWork文件,如果存在子的frameWork,那么需要對(duì)每一個(gè)都簽,挨個(gè)對(duì)frameWork執(zhí)行簽名操作
此處簽名的命令為:
codesign -fs"iPhone Distribution: 你的發(fā)布證書團(tuán)隊(duì)名稱 自己在鑰匙串查看"***.framework(frameWork路徑)//如果替換簽名成功,會(huì)顯示 ***.framework : relpacing existing signature
frameWork文件夾內(nèi)的frameWork簽名之后,那么我們下一步需要獲取我們用來簽名的embedded.mobileprovision文件中包含的權(quán)限信息對(duì)我們的Payload文件夾簽名
獲取embedded.mobileprovision的信息的命令為:
通過下屬命令獲取里面的文件信息securitycms-D-iembedded.mobileprovision/*
終端會(huì)打印出來所有信息,我們需要選擇Entitlements為key的字典,將其copy出來,
*/
copy的模塊內(nèi)容如下:
image.png
可以在xcode中,選中plist文件,右鍵,openAs--SourceCode,將內(nèi)容copy進(jìn)去保存即可
image.png
將上面的文件命名為elements.plist(任意名字都可以,為了方便理解)文件放到Payload同級(jí)目錄下(其實(shí)放哪都行,只是為了操作方便)
image.png
然后使用我們后續(xù)的命令,對(duì)文件夾進(jìn)行簽名
//--no-strict -- 關(guān)鍵字是不嚴(yán)格的簽名 然后配置我們創(chuàng)建的plist 然后進(jìn)行簽名,簽名成功也會(huì)顯示類似frameWork的簽名替換codesign -fs"iPhone Distribution: 你的發(fā)布證書團(tuán)隊(duì)名稱 自己在鑰匙串查看"--no-strict --entitlements=/Entitlements.plist? /Payload/XDl.app
ps: 可以使用命令查看app簽名信息:
//查看app簽名信息codesign -vv -d Example.app
得到信息如圖:
image.png
最好一部便是遞歸壓縮文件,將文件壓成ipa
命令如下:
//? zip -r? 保留的ipa名字.ipa? Payload/? zip -r resign.ipa Payload/
然后就可以安裝到合適的設(shè)備上了 中間步驟不需要改包名
個(gè)人猜想為什么不修改包名仍舊能夠成功
通過查看_codeSign文件夾李皇,看到里面是對(duì)app下的文件資源都進(jìn)行了簽名結(jié)果記錄弱匪,里面包含info.plist蛤签,所以個(gè)人猜測(cè)蘋果將包名(其實(shí)是info.plist)當(dāng)做一個(gè)資源文件進(jìn)行摘要,并沒有檢驗(yàn)里面的內(nèi)容,只要確保是開發(fā)者簽發(fā)的就可以
但是我認(rèn)為這是不安全的开呐,我認(rèn)為應(yīng)該也去檢驗(yàn)info的信息杜耙,就和使用配置文件的權(quán)限去對(duì)整體文件夾簽名一樣搜骡,需要配置文件里面的包名和info.plist一樣,也可能是蘋果認(rèn)為一般打包都是xcode做的佑女,其實(shí)我們跑別人包名的時(shí)候记靡,xcode會(huì)不讓跑,讓更換包名团驱,難道把檢驗(yàn)步驟交給了xcode摸吠?個(gè)人猜測(cè)店茶,不知道有沒有同學(xué)有別的想法贩幻,可以給我提供點(diǎn)思路及想法,謝謝
作者:空空小僧
鏈接:http://www.reibang.com/p/b25dad435879
來源:簡(jiǎn)書
簡(jiǎn)書著作權(quán)歸作者所有族壳,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處仿荆。