重簽ipa

讓.保羅.薩特曾說過:現(xiàn)實(shí)的精華就是匱乏,一種普遍而永恒的欠缺。人生重要的不是填補(bǔ)一種不完美,而是找到自己的位置鸽疾。

iOS簽名機(jī)制

iOS 平臺(tái)對(duì)第三方 APP 有絕對(duì)的控制權(quán),一定要保證每一個(gè)安裝到 iOS 上的 APP 都是經(jīng)過蘋果官方允許的训貌,所使用的就是蘋果的簽名機(jī)制制肮。蘋果簽名使用的是非對(duì)稱加密技術(shù),非對(duì)稱加密有兩份密鑰递沪,分別是公鑰和私鑰豺鼻,用公鑰加密的數(shù)據(jù),要用私鑰才能解密区拳,用私鑰加密的數(shù)據(jù)拘领,要用公鑰才能解密。比較常見的非對(duì)稱加密算法就是RSA樱调。

RSA的基本實(shí)現(xiàn)原理如下:

第一步约素,隨機(jī)選擇兩個(gè)不相等的質(zhì)數(shù)p和q
第二步,計(jì)算p和q的乘積n
第三步笆凌,計(jì)算n的歐拉函數(shù)φ(n)

φ(n) = (p-1)(q-1)

第四步圣猎,隨機(jī)選擇一個(gè)整數(shù)e,條件是1< e < φ(n)乞而,且e與φ(n) 互質(zhì)送悔。
第五步,計(jì)算e對(duì)于φ(n)的模反元素d(就是指有一個(gè)整數(shù)d,可以使得ed被φ(n)除的余數(shù)為1)

ed ≡ 1 (mod φ(n))    ==   ed - 1 = kφ(n)

于是欠啤,找到模反元素d荚藻。(用"擴(kuò)展歐幾里得算法"求解)

第六步,將n和e封裝成公鑰洁段,n和d封裝成私鑰

私鑰被破解应狱,需要大整數(shù)的因數(shù)分解,是一件非常困難的事情祠丝。目前疾呻,除了暴力破解,還沒有發(fā)現(xiàn)別的有效方法写半。對(duì)極大整數(shù)做因數(shù)分解的難度決定了RSA算法的可靠性岸蜗。

App的安裝方式有四種:

1. 通過App Store安裝

由蘋果生成一對(duì)公私鑰,公鑰內(nèi)置iOS設(shè)備中叠蝇,私鑰由蘋果保管璃岳。開發(fā)者上傳App給蘋果審核后,蘋果用私鑰對(duì)App數(shù)據(jù)進(jìn)行簽名蟆肆,使用的是發(fā)布證書矾睦,發(fā)布至App Store。iOS設(shè)備下載App后炎功,用公鑰進(jìn)行驗(yàn)證,若正確缓溅,則證明App是由蘋果認(rèn)證過的蛇损。

2. 開發(fā)者可以通過Xcode安裝

蘋果采用了雙重簽名的機(jī)制。Mac電腦有一對(duì)公私鑰坛怪,蘋果還是原來的一對(duì)公私鑰淤齐。

開發(fā)時(shí)需要真機(jī)測(cè)試時(shí),需要從鑰匙串中的證書中心創(chuàng)建證書請(qǐng)求文件(CSR CertificateSigningRequest.certSigningRequest 用于綁定電腦袜匿,文件中有Mac電腦的公鑰)更啄,并傳至蘋果服務(wù)器。

Apple使用私鑰對(duì) CSR 簽名居灯,生成一份包含Mac公鑰信息及Apple對(duì)它的簽名祭务,被稱為證書(CER:即開發(fā)證書,發(fā)布證書)怪嫌,這里使用的是開發(fā)證書义锥。

編譯完一個(gè)App后,Mac電腦使用私鑰對(duì)App進(jìn)行簽名岩灭。

在安裝App時(shí)拌倍,根據(jù)當(dāng)前配置把CER證書一起打包進(jìn)App。

iOS設(shè)備通過內(nèi)置的Apple的公鑰驗(yàn)證CER是否正確,證書驗(yàn)證確保Mac公鑰時(shí)經(jīng)過蘋果認(rèn)證的柱恤。

再使用CER文件中Mac的公鑰去驗(yàn)證App的簽名是否正確数初,確保安裝行為是經(jīng)過蘋果允許的。在蘋果注冊(cè)過的設(shè)備才可以安裝梗顺;簽名只針對(duì)某一個(gè)App妙真。打包證書進(jìn)App中時(shí),還需要加上允許安裝的設(shè)備ID和App對(duì)應(yīng)的APPID等數(shù)據(jù)(Profile文件)荚守。

蘋果還要控制iCloud/push/后臺(tái)運(yùn)行等珍德,這些都需要蘋果授權(quán)簽名,蘋果把這些權(quán)限開關(guān)統(tǒng)稱為:Entitlements矗漾,需要蘋果授權(quán)锈候。因此證書中可能包含很多東西,不符合規(guī)定的格式規(guī)范敞贡,所以有了Provisioning Profile(描述文件)泵琳,描述中包含了證書以及其他所有的信息及信息的簽名。

蘋果只是確定這里的安裝行為是否合法誊役,不會(huì)驗(yàn)證App內(nèi)容是否修改获列。根據(jù)數(shù)字簽名的原理,只要數(shù)字簽名通過驗(yàn)證蛔垢,這里的設(shè)備 IDs / AppID / Mac公鑰 就都是經(jīng)過蘋果認(rèn)證的击孩,無法被修改,蘋果就可以限制可安裝的設(shè)備和App鹏漆。

3. Ad-Hoc 測(cè)試證書打包的App巩梢,數(shù)量限制100

Ad-Hoc可以用發(fā)布證書打測(cè)試包,流程幾乎和上面的真機(jī)調(diào)試一樣艺玲,唯一的差別在第4步括蝠。編譯簽名完之后,要導(dǎo)出ipa文件饭聚,導(dǎo)出時(shí)忌警,需要選擇一個(gè)保存的方法(App Store/Ad Hoc/Enterprise/Development),就是選擇將上一步生成的CER一起打包進(jìn)App秒梳。

4. In-House 企業(yè)版證書打包App法绵,信任企業(yè)證書后可以使用

企業(yè)版證書簽名驗(yàn)證流程和Ad-Hoc差不多,需要用企業(yè)版證書簽名端幼。只是企業(yè)版不限制設(shè)備數(shù)礼烈,而且需要用戶在iOS設(shè)備上的設(shè)置里手動(dòng)點(diǎn)擊信任證書。

最終流程如下:


其他人想要編譯簽名App時(shí)應(yīng)怎么做? 簡(jiǎn)單就是把私鑰給他婆跑。私鑰也是從 鑰匙串 中導(dǎo)出此熬,就是.p12文件,其他Mac導(dǎo)入私鑰后就可以正常使用了。

查看ipa包中注冊(cè)的設(shè)備ID犀忱,解壓.ipa文件募谎,得到App數(shù)據(jù)包,顯示包內(nèi)容阴汇,找到embedded.mobileprovision文件所在目錄数冬,運(yùn)行命令:

security cms -D -i embedded.mobileprovision

重簽

從上面的原理,我們知道搀庶,如果想看別人的App拐纱,需要他們的.P12文件,如果拿不到別人的.P12文件哥倔,咋整呢秸架。那就只能自己整了。

第一種方式:
從PP助手等破解平臺(tái)下載ipa包咆蒿,這里能找到的包东抹,幾乎都是已經(jīng)重簽過的氢橙,可以隨心所用窍育。

第二種方式:
稍顯復(fù)雜,根據(jù)上面描述丹锹,找到自己打的ipa包的embedded.mobileprovision文件蒂破。然后安裝sigh腳本

sudo gem install sigh

報(bào)錯(cuò)使用下面命令

sudo gem install -n /usr/local/bin sigh

如此馏谨,便可使用sigh重簽名了。

1寞蚌、在終端輸入sigh resign田巴,回車
2、把要簽名的ipa文件(路徑挟秤、包名不要有中文)拖到終端窗口上,回車
3抄伍、填寫用來簽名的證書(第一步中的證書)名如圖(鑰匙串中的完整名字)艘刚,回車
4、把項(xiàng)目的配置文件.mobileprovision文件(第二步中的文件)拖到終端窗口上截珍,回車
5攀甚、resign腳本會(huì)自動(dòng)更改bundel id,簽名并重新打包岗喉。

完成后提示Successfully signed秋度,新生成的包會(huì)自動(dòng)替換原有文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钱床,一起剝皮案震驚了整個(gè)濱河市荚斯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖事期,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滥壕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡兽泣,警方通過查閱死者的電腦和手機(jī)绎橘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唠倦,“玉大人称鳞,你說我怎么就攤上這事〕肀牵” “怎么了冈止?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)枷餐。 經(jīng)常有香客問我靶瘸,道長(zhǎng),這世上最難降的妖魔是什么毛肋? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任怨咪,我火速辦了婚禮,結(jié)果婚禮上润匙,老公的妹妹穿的比我還像新娘诗眨。我一直安慰自己,他們只是感情好孕讳,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布匠楚。 她就那樣靜靜地躺著,像睡著了一般厂财。 火紅的嫁衣襯著肌膚如雪芋簿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天璃饱,我揣著相機(jī)與錄音与斤,去河邊找鬼。 笑死荚恶,一個(gè)胖子當(dāng)著我的面吹牛撩穿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谒撼,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼食寡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了廓潜?” 一聲冷哼從身側(cè)響起抵皱,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤善榛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后叨叙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锭弊,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年擂错,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了味滞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钮呀,死狀恐怖剑鞍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情爽醋,我是刑警寧澤蚁署,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站蚂四,受9級(jí)特大地震影響光戈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜遂赠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一久妆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧跷睦,春花似錦筷弦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜕乡,卻和暖如春奸绷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背层玲。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工健盒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人称簿。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像惰帽,于是被迫代替她去往敵國(guó)和親憨降。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345