iOS重簽名了解一下

什么是代碼簽名

  • 簽名: 確保被簽名文件的有效性
  • 代碼簽名:iOS里的代碼簽名万哪,簡單概括就是用Mac上的私鑰,對(duì)app進(jìn)行一次簽名,確保app的完整闲先,防止別人篡改

回顧一下打包app的過程羞酗,要做哪些操作
Certificates:需要從證書頒發(fā)機(jī)構(gòu)CA那里創(chuàng)建一個(gè).certSigningRequest文件腐宋,這是使用非對(duì)稱加密創(chuàng)建的一對(duì)密鑰,私鑰存在Mac里整慎,公鑰就是.certSigningRequest要上傳到apple的開發(fā)者后臺(tái)脏款。apple用自己的私鑰對(duì).certSigningRequest文件進(jìn)行簽名生成.cer證書,把這個(gè).cer下載下來安裝到Mac上裤园,當(dāng)導(dǎo)出P12格式的證書時(shí)會(huì)把Mac的私鑰一起導(dǎo)出生成P12證書撤师。
Identifiers:創(chuàng)建app的Bundle ID,在創(chuàng)建appid的時(shí)候會(huì)勾選app用到的哪些權(quán)限拧揽,比如
Game Center剃盾、In-App Purchase、Sign In with Apple等淤袜。
Devices:需要調(diào)試設(shè)備的UDID
Profiles:根據(jù)Certificates痒谴、Identifiers、Devices生成的描述文件*.mobileprovision
展開mobileprovision可以看到描述文件里包含了Certificates證書铡羡、app ID和包含的Entitlements權(quán)限积蔚、Devices設(shè)備的UDID


在打包app的時(shí)候Xcode用證書和描述文件對(duì)app進(jìn)行了一次簽名。

為什么要重簽名

有時(shí)候在處理app的時(shí)候烦周,需要對(duì)app里面的資源進(jìn)行增刪改查的操作尽爆,例如更換啟動(dòng)圖,修改bundle读慎,修改動(dòng)態(tài)庫等漱贱,這會(huì)破壞原來打包app時(shí)候的簽名,導(dǎo)致app安裝失敗夭委,就是安裝的時(shí)候iOS的系統(tǒng)校驗(yàn)簽名失敗幅狮,需要重新簽名才可以安裝。

從上面可以知道描述文件里包含了Certificates株灸、Identifiers崇摄、Devices等信息,簽名的時(shí)候需要描述文件里包含的Certificates證書跟所簽名的P12證書信息一致才會(huì)簽名成功慌烧,但神奇的是并不需要描述文件里包含的app ID和工程里的app ID(info.plist里的Bundle ID)一致就可以簽名成功配猫,所以這也衍生出了超級(jí)簽企業(yè)簽等應(yīng)用場(chǎng)景杏死,只要我有包含私鑰的P12證書和包含這個(gè)證書的描述文件泵肄,就可以給任意的app簽名捆交。

如何進(jìn)行重簽名

對(duì)app進(jìn)行重簽名,首先得有個(gè)app吧腐巢,使用Xcode打包出來的是ipa包品追,ipa包解壓出來的結(jié)構(gòu)是Payload/*.app


有app包之后,重簽名需要用到包含Mac私鑰的P12證書冯丙,包含證書肉瓦、app ID、device ID的描述文件.mobileprovision

把P12證書安裝到Mac上后胃惜,要獲取到這個(gè)證書的ID泞莉,以下命令可以查看電腦上所安裝的所有證書,找到對(duì)應(yīng)的證書ID船殉,使用證書ID或者證書名字都可以

$ security find-identity -v -p codesigning

    1) C6C00376F3FAB3BFB33ECCE44D4698B1D5A4E293 "iPhone Distribution: CaiEn Rong (4Q3SJV59SN)"

把描述文件adhoc.mobileprovision拷貝到app的根路徑里鲫趁,名字改為embedded.mobileprovision,名字是固定寫法

$ cp adhoc.mobileprovision Payload/dis.app/embedded.mobileprovision

把描述文件adhoc.mobileprovision轉(zhuǎn)成.plist文件格式輸出利虫,方便后續(xù)獲取其中的權(quán)限列表

$ security cms -D -i adhoc.mobileprovision > entitlements_full.plist

截取描述文件中的權(quán)限文件挨厚,用于app的簽名

$ /usr/libexec/PlistBuddy -x -c 'Print:Entitlements' entitlements_full.plist > entitlements.plist

用前面獲取到的證書ID或者證書名字、描述文件里獲取到的權(quán)限列表對(duì)app進(jìn)行簽名
如果app內(nèi)包含了動(dòng)態(tài)庫糠惫,需要先對(duì)動(dòng)態(tài)庫進(jìn)行簽名疫剃,再對(duì)app簽名,區(qū)別是動(dòng)態(tài)庫的簽名不需要附加權(quán)限列表硼讽,動(dòng)態(tài)庫的路徑是Payload/*.app/Frameworks/*.framework巢价,以下是對(duì)動(dòng)態(tài)庫進(jìn)行簽名,如果app中沒有動(dòng)態(tài)庫固阁,可以跳過

$ /usr/bin/codesign --continue -f -s "iPhone Distribution: CaiEn Rong (4Q3SJV59SN)" Payload/*.app/Frameworks/*.framework

接著對(duì)app進(jìn)行簽名壤躲,以下命令

$ /usr/bin/codesign --continue -f -s "iPhone Distribution: CaiEn Rong (4Q3SJV59SN)" --entitlements "entitlements.plist" Payload/*.app

簽名完成后,可以校驗(yàn)一波簽名是否有效您炉,如果沒有任何輸出,這說明簽名有效役电,Unix的設(shè)計(jì)就是這樣赚爵,沒有輸出就是最好的輸出

$ codesign -v Payload/*.app

最后把Payload文件壓縮一波,改成ipa格式就可以使用了法瑟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冀膝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子霎挟,更是在濱河造成了極大的恐慌窝剖,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酥夭,死亡現(xiàn)場(chǎng)離奇詭異赐纱,居然都是意外死亡脊奋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門疙描,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诚隙,“玉大人,你說我怎么就攤上這事起胰【糜郑” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵效五,是天一觀的道長地消。 經(jīng)常有香客問我,道長畏妖,這世上最難降的妖魔是什么脉执? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮瓜客,結(jié)果婚禮上适瓦,老公的妹妹穿的比我還像新娘。我一直安慰自己谱仪,他們只是感情好玻熙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疯攒,像睡著了一般嗦随。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敬尺,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天枚尼,我揣著相機(jī)與錄音,去河邊找鬼砂吞。 笑死署恍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蜻直。 我是一名探鬼主播盯质,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼概而!你這毒婦竟也來了呼巷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤赎瑰,失蹤者是張志新(化名)和其女友劉穎王悍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體餐曼,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡压储,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年鲜漩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渠脉。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宇整,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芋膘,到底是詐尸還是另有隱情鳞青,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布为朋,位于F島的核電站臂拓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏习寸。R本人自食惡果不足惜胶惰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望霞溪。 院中可真熱鬧孵滞,春花似錦、人聲如沸鸯匹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殴蓬。三九已至匿级,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間染厅,已是汗流浹背痘绎。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肖粮,地道東北人孤页。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像涩馆,于是被迫代替她去往敵國和親行施。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 筆者接觸打包已經(jīng)一段時(shí)間了凌净,但一直對(duì)簽名都是似懂非懂悲龟,最近從加密數(shù)論知識(shí)起回看這部分知識(shí)屋讶,感覺還是有很多不懂的地方...
    luonaerduo閱讀 1,167評(píng)論 0 3
  • 一冰寻、加密解密 1. 密碼相關(guān) 1.1 簡介 根據(jù)對(duì)加密和解密使用的密鑰方法,可以將密碼分為2種: 對(duì)稱密碼:加密用...
    CoderJRHuo閱讀 685評(píng)論 0 0
  • 引言 關(guān)于開發(fā)證書配置(Certificates & Identifiers & Provisioning Pro...
    奮斗的蝸牛閱讀 7,404評(píng)論 2 20
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月皿渗,有人笑有人哭斩芭,有人歡樂有人憂愁轻腺,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,536評(píng)論 28 53
  • 人工智能是什么划乖?什么是人工智能贬养?人工智能是未來發(fā)展的必然趨勢(shì)嗎?以后人工智能技術(shù)真的能達(dá)到電影里機(jī)器人的智能水平嗎...
    ZLLZ閱讀 3,783評(píng)論 0 5