iOS開發(fā)逆向之應(yīng)用重簽名(上)

本文主要介紹重簽名的幾種方式厘惦,以及如何對(duì)應(yīng)用進(jìn)行重簽名值依,

應(yīng)用重簽名

從之前《iOS逆向應(yīng)用簽名》中可知疾宏,簽名是指原始數(shù)據(jù)的Hash值解密黍特。那么重簽名,顧名思義们颜,就是指將原始數(shù)據(jù)的Hash值重新加密吕朵。

作為一個(gè)開發(fā)者,有一個(gè)學(xué)習(xí)的氛圍跟一個(gè)交流圈子特別重要窥突,這是一個(gè)我的iOS開發(fā)交流群:130 595 548努溃,不管你是小白還是大牛都?xì)g迎入駐 ,讓我們一起進(jìn)步阻问,共同發(fā)展N嗨啊(群內(nèi)會(huì)免費(fèi)提供一些群主收藏的免費(fèi)學(xué)習(xí)書籍資料以及整理好的幾百道面試題和答案文檔!)

本次介紹的應(yīng)用重簽名方式主要有以下幾種:

  • Codesign重簽名

  • Xcode重簽名

  • Shell腳本重簽名

下面來進(jìn)行一一介紹

方式1:Codesign重簽名

在iOS中称近,Xcode為我們提供了簽名工具第队,即codesign,通過一些命令即可完成重簽名刨秆,如下所示

  • <article class="_2rhmJa" deep="5"security find-identity -v -p codesigning`: 列出鑰匙串里可簽名的證書

  • <article class="_2rhmJa" deep="5"Codesign –fs “證書串” 文件名` :強(qiáng)制替換簽名

  • <article class="_2rhmJa" deep="5"Chmod +x 可執(zhí)行文件` : 給文件添加權(quán)限

  • <article class="_2rhmJa" deep="5"security cms -D -i ../embedded.mobileprovision` :查看描述文件

  • <article class="_2rhmJa" deep="5"codesign -fs “證書串” --no-strict --entitlements=權(quán)限文件.plist APP包`

  • <article class="_2rhmJa" deep="5"Zip –ry 輸出文件 輸入文件` 將輸入文件壓縮為輸出文件

Codesign演示

如何獲取越獄手機(jī)的ipa包

  • 1凳谦、建立鏈接:sh usbConnect.sh

  • 2、連接手機(jī):sh usbX.sh

  • 3衡未、查看進(jìn)程:ps -A

  • 4尸执、篩選進(jìn)程,找到微信進(jìn)程:ps -A | grep WeChat

  • 5缓醋、拷貝:scp -r -P 12345 root@localhost:路徑 ./

  • 6如失、查看拷貝的app包:cd WeChat.app

  • 7、查看可執(zhí)行文件:otool -l WeChat | grep crypt (此時(shí)的cryptid 是 1送粱,表示加密過的)

  • 8褪贵、查看app的權(quán)限:codesign -vv -d WeChat.app (有簽名權(quán)限)

準(zhǔn)備工作

注:所需的資料可關(guān)注公眾號(hào):編程大鑫 獲取

  • 1、準(zhǔn)備一個(gè)微信的越獄包,這里準(zhǔn)備的是通過MyZip解壓 微信-7.0.8.ipa

    • 其中的WeChat.app包含兩個(gè)東西:app + app簽名信息

  • 2脆丁、查看app包的簽名信息(CMD+G): codesign -vv -d WeChat.app

  • 3世舰、查看鑰匙串的證書:security find-identity -v -p codesigning

  • 4、查看可執(zhí)行文件詳細(xì)信息:otool -l WeChat > ~/Desktop/123.txt槽卫。其中有cryptid加密id(0表示沒有使用加密算法)

codesign重簽名步驟

給應(yīng)用重簽名的步驟如下:

  • 1冯乘、刪除插件和帶有插件的.app包(例如Watch、plugins)

  • 2晒夹、對(duì)Frameworks里面的庫(kù)進(jìn)行重簽名

  • 3、給可執(zhí)行文件 +x(可執(zhí)行)權(quán)限

  • 4姊氓、新建一個(gè)空工程

  • 5丐怯、添加描述文件(4中的空工程通過真機(jī)編譯得到,且要運(yùn)行翔横,因?yàn)樾枰獙⒚枋鑫募惭b到手機(jī))

  • 6读跷、替換.app包中BundleID(.app包中info.plist文件的BundleID要和描述文件中的BundleID保持一致)

  • 7、通過授權(quán)文件(Entilements)重簽.app包禾唁、

    • 1)查看描述文件:$security cms -D -i embedded.mobileprovision

    • 2)將描述文件中Entilements 拷貝出來效览,生成plist文件。(文件名稱entitlements.plist

    • 3)用權(quán)限文件簽名APP包: $ codesign -fs "Apple Development: XX(XX)" --no-strict --entitlements=entitlements.plist WeChat.app

  • 8荡短、最后通過Xcode安裝

  • 注:mach-o最重要的兩塊:代碼塊 + 數(shù)據(jù)塊丐枉,其中加密主要是加密代碼

codesign重簽名演示
  • 前提:

    • 需要簽名:wechat可執(zhí)行文件(即Mach-O文件) + Frameworks

    • 需要?jiǎng)h除:plugins(免費(fèi)普通賬戶無法簽名,可以刪除) + Watch(也無法簽名掘托,刪除)

  • 1瘦锹、查看Frameworks,也是有簽名信息的:codesign -vv -d andromeda.framework

  • 2闪盔、重簽名Frameworks:codesign -fs "Apple Development: chenjialin1016@foxmail.com (C2893S7GXH)" andromeda.framework

    然后執(zhí)行退出 cd ..

  • 3弯院、查看可執(zhí)行文件:ls -l WeChat

    • 注:重簽名必須要有可執(zhí)行權(quán)限,即 - x
  • 4泪掀、新建一個(gè)工程听绳,獲取chenjialin1016@foxmail.com (C2893S7GXH)對(duì)應(yīng)的描述文件 ,例如 xxx xxx(Personal Team) 獲取可執(zhí)行文件中的描述文件异赫,拷貝至WeChat包

  • 5椅挣、描述文件和BundleID有關(guān)系,需要修改WeChat的BundleID com.tencent.xinxxx.com.test

  • 6祝辣、查看描述文件的權(quán)限:security cms -D -i embedded.mobileprovision

    查看Entitlements(權(quán)限),是一個(gè)plist文件

    將其拷貝至一個(gè)plist文件(名稱為Entitlements贴妻,需要新建)(路徑:propertyList - open sourceCode - 拷貝 <dict></dict>)

    將其拷貝至payload文件夾中

  • 7、簽名app(即mach-o簽名):codesign -fs "Apple Development: xxxxxx@foxmail.com (C2893S7GXH)" --no-strict --entitlements=Entitlements.plist WeChat.app

  • 8蝙斜、查看WeChat簽名:codesign -vv -d WeChat.app名惩, 此時(shí)簽名信息已經(jīng)替換

  • 9、安裝

  • 10孕荠、調(diào)試:Debug - Attach to process - WeChat

Codesign重簽名缺點(diǎn):過程太繁瑣

方式2:Xcode重簽名

下面我們通過Xcode來進(jìn)行重簽名娩鹉,步驟如下:

  • 1攻谁、刪除Plugins、Watch

  • 2弯予、重簽名Frameworks

  • 3戚宦、創(chuàng)建并運(yùn)行一個(gè)空工程

  • 4、修改Info.plist中的BundleID改為 空工程的BundleID

  • 5锈嫩、利用修改后的app包受楼,替換空工程的app包

  • 6、直接運(yùn)行

與CodeSign重簽名相比:少了其中的3(執(zhí)行文件權(quán)限)呼寸、5(添加描述文件)艳汽、7(通過授權(quán)文件重簽.app包)

xcode重簽名演示

  • 1、將product中的WeChat替換成 需要我們之前重簽名的WeChat

  • 2对雪、CMD+R再次運(yùn)行

總結(jié)

  • 重簽名:將原始數(shù)據(jù)的Hash值重新加密

  • Codesign重簽名步驟

    • 1河狐、刪除插件和帶有插件的.app包(例如Watch、plugins)

    • 2瑟捣、對(duì)Frameworks里面的庫(kù)進(jìn)行重簽名

    • 3馋艺、給可執(zhí)行文件 +x(可執(zhí)行)權(quán)限

    • 4、新建一個(gè)空工程

    • 5迈套、添加描述文件(4中的空工程通過真機(jī)編譯得到捐祠,且要運(yùn)行,因?yàn)樾枰獙⒚枋鑫募惭b到手機(jī))

    • 6桑李、替換.app包中BundleID(.app包中info.plist文件的BundleID要和描述文件中的BundleID保持一致)

    • 7雏赦、通過授權(quán)文件(Entilements)重簽.app包、

      • 1)查看描述文件:$security cms -D -i embedded.mobileprovision

      • 2)將描述文件中Entilements 拷貝出來芙扎,生成plist文件星岗。(文件名稱entitlements.plist

      • 3)用權(quán)限文件簽名APP包: $ codesign -fs "Apple Development: XX(XX)" --no-strict --entitlements=entitlements.plist WeChat.app

    • 8、最后通過Xcode安裝

  • Xcode重簽名步驟

    • 1戒洼、刪除Plugins俏橘、Watch

    • 2、重簽名Frameworks

    • 3圈浇、創(chuàng)建并運(yùn)行一個(gè)空工程

    • 4寥掐、修改Info.plist中的BundleID改為 空工程的BundleID

    • 5、利用修改后的app包磷蜀,替換空工程的app包

    • 6召耘、直接運(yùn)行

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市褐隆,隨后出現(xiàn)的幾起案子污它,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衫贬,死亡現(xiàn)場(chǎng)離奇詭異德澈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)固惯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門梆造,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人葬毫,你說我怎么就攤上這事镇辉。” “怎么了贴捡?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵摊聋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我栈暇,道長(zhǎng),這世上最難降的妖魔是什么箍镜? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任源祈,我火速辦了婚禮,結(jié)果婚禮上色迂,老公的妹妹穿的比我還像新娘香缺。我一直安慰自己,他們只是感情好歇僧,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布图张。 她就那樣靜靜地躺著,像睡著了一般诈悍。 火紅的嫁衣襯著肌膚如雪祸轮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天侥钳,我揣著相機(jī)與錄音适袜,去河邊找鬼。 笑死舷夺,一個(gè)胖子當(dāng)著我的面吹牛苦酱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播给猾,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼疫萤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了敢伸?” 一聲冷哼從身側(cè)響起扯饶,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后帝际,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔓同,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年蹲诀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斑粱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脯爪,死狀恐怖则北,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情痕慢,我是刑警寧澤尚揣,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站掖举,受9級(jí)特大地震影響快骗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜塔次,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一方篮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧励负,春花似錦藕溅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至略吨,卻和暖如春集币,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翠忠。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工惠猿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人负间。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓偶妖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親政溃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子趾访,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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