2020 iOS 逆向?qū)W習-砸殼(更新:20200408)

網(wǎng)上關(guān)于 iOS 應(yīng)用砸殼相關(guān)的博客让虐,非常多,但都存在一些問題罢荡。

  1. 年代久遠赡突,砸殼的方法早已過時
  2. 比較新的文檔,不夠完整区赵,不夠詳細惭缰,對于一些過程都是一帶而過,缺乏詳細的描述笼才,對小白來說非常不友好漱受。

故,我將最近實踐成功的經(jīng)驗詳細地記錄下來骡送,希望對小白們有所幫助吧昂羡,如果文中有說得不對的地方,也希望大家能指出摔踱。

預備知識

教材:主要學習了一下慶哥(劉培慶)的書《iOS應(yīng)用逆向與安全》虐先,小伙伴們可以去買一本正版紙書,支持一下~

越獄設(shè)備

本次學習派敷,選擇的是 iOS 13.3.1 的 iPad mini4蛹批, A8 芯片 ARMv8 架構(gòu)

iOS12-13越獄教程

其中要注意兩點

  1. checkra1n 屬于不完美越獄,與完美越獄的區(qū)別是如果設(shè)備重啟了篮愉,將會回到未越獄狀態(tài)腐芍,需要重新越獄。
  2. 注意越獄成功后试躏,在手機上使用 checkra1n app下載 cydia 時猪勇,可以使用 4G 網(wǎng)絡(luò),可以大幅加快下載速度冗酿。

frida 砸殼

為什么要砸殼埠对?

這是因為應(yīng)用上傳至App Store后,蘋果會對應(yīng)用的代碼部分進行加密裁替,當應(yīng)用運行時才會動態(tài)解密项玛, 在這樣的情況下是無法直接使用后面講到的class-dump和IDA進行分析的。所以弱判,在分析應(yīng)用之前襟沮,要把應(yīng)用加密的內(nèi)容解密,然后把應(yīng)用和解密后的可執(zhí)行文件導出到計算機中。

這里我不會使用網(wǎng)上經(jīng)常出現(xiàn)的 dumpdecrypted开伏、Clutch膀跌,而是使用了 frida

1 iOS 端配置

  1. 在越獄設(shè)備上固灵,打開 cydia捅伤,添加源 https://build.frida.re
  2. 打開添加的源,找出 frida 進行安裝巫玻,其中會列出 3 個軟件丛忆,分別是 Frida for 32-bit devicesFrida for A12+ devices仍秤、Frida for pre-A12 devices 三個熄诡,請根據(jù)越獄設(shè)備的實際 CPU 類型,進行選擇诗力,本文中使用的 iPad mini 4 是 A8 芯片凰浮,所以安裝了第三項
  3. 安裝完成后,可在ssh終端運行 frida-ps -U 查看苇本,是否成功(實測袜茧,command not found 應(yīng)該也不影響后續(xù)的使用)

2 MAC 端配置

Anaconda

這個軟件的主要作用是可以配置多種不同的 Python 環(huán)境,避免在 MAC 上安裝多個 Python 版本圈澈,導致的管理混亂惫周,其他功能可以自己去了解一下。

這里采用 Anaconda 的原因是康栈,在用普通方式(在自己的 mac 下安裝不同版本的 Python,并安裝依賴庫)踩了很多坑喷橙,實在趟不過了......

  1. 搜索并安裝 Anaconda 軟件
  2. 安裝完成后啥么,建議不使用軟件自帶的 Python,而是自己 create environment贰逾,這里配置環(huán)境 Python 3.7悬荣,并為環(huán)境取名 zyy
  3. 配置完成后,點擊對應(yīng) zyy 環(huán)境的三角箭頭疙剑,打開終端氯迂,這個終端就會有你安裝的 Python 版本

安裝 frida-ios-dump

  1. 克隆慶哥(劉培慶)改造過的倉庫,代碼如下
git clone https://github.com/AloneMonkey/frida-ios-dump
  1. 使用前面提到的 Anaconda 打開的終端言缤, cd 到前一步下載的目錄 frida-ios-dump
  2. 安裝需要的依賴
sudo pip install -r requirements.txt --upgrade
  1. 如果在上一步出現(xiàn) six 導致的問題嚼蚀,請忽略 six 這個庫
sudo pip install six --upgrade --ignore-installed six
  1. 如果安裝的過程比較慢,可以切換成清華源進行安裝 (如果存在因為這個源而導致某些庫安裝不成功管挟,可以通過修改 requirements.txt 中的依賴庫名單來分批下載轿曙,使用原本的源下載不成功的庫)
sudo pip install -r requirements.txt --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple

電腦和 iOS 設(shè)備的端口映射

  1. 使用 USB 將設(shè)備與電腦相連
  2. 進行映射,在終端輸入 iproxy 2222 22(其中 2222 代表電腦端的端口,22 是 iOS 設(shè)備的端口號导帝,如果發(fā)現(xiàn)電腦端端口號已被占用守谓,可以使用新的端口號進行映射,打開在 frida-ios-dump 目錄下的 dump.py您单,并將 2222 修改為新的端口號斋荞,端口號注意不要超過四位數(shù))
  3. 終端顯示 waiting for connection,看到這兒虐秦,抓緊時間看下一步的砸殼喔譬猫,否則連接就會超時

砸殼

  1. 確保 iOS 設(shè)備一直保持 USB 連接,并將想要砸殼的應(yīng)用打開羡疗,保證顯示在前臺染服,否則可能出現(xiàn)找不到應(yīng)用,導致砸殼失敗
  2. 使用 Anaconda 的 zyy 環(huán)境另開一個新的終端
  3. cd 到之前下載的 frida-ios-dump 目錄
  4. 執(zhí)行 ./dump.py 微信(這里將微信改成你想砸殼的應(yīng)用名即可)
  5. 如果發(fā)現(xiàn)應(yīng)用名稱重復了怎么辦叨恨?終端執(zhí)行 ./dump.py -l 可以查看已安裝的應(yīng)用名稱和對應(yīng)的 bundle Id
PID  Name                       Identifier
-----  -------------------------  ----------------------------------------
 9661  App Store                  com.apple.AppStore
16977  Moment                     com.kevinholesh.Moment
 1311  Safari                     com.apple.mobilesafari
16586  信息                         com.apple.MobileSMS
 4147  微信                         com.tencent.xin
10048  相機                         com.apple.camera
 7567  設(shè)置                         com.apple.Preferences
    -  CrashReporter              crash-reporter
    -  Cydia                      com.saurik.Cydia
    -  通訊錄                        com.apple.MobileAddressBook
    -  郵件                         com.apple.mobilemail
    -  音樂                         com.apple.Music
  1. 執(zhí)行如下命令柳刮,對指定的 bundle id 應(yīng)用進行砸殼,./dump.py -b com.tencent.xin
  2. 砸殼成功痒钝,可以在 frida-ios-dump 目錄下找到 xxx.ipa

如何判斷 ipa 是否有殼

  1. 將 ipa 文件后綴改為 zip 進行解壓
  2. 找到 xx.app 包內(nèi)容下的 xx 二進制可執(zhí)行文件(abc 是我隨便取的)
  3. 在終端執(zhí)行 otool -l xx | grep crypt
  4. 找到 cryptid 這一行秉颗,有殼為 1,已脫殼為 0

如果能成功走到這一步送矩,恭喜蚕甥,砸殼成功啦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栋荸,一起剝皮案震驚了整個濱河市菇怀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晌块,老刑警劉巖爱沟,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異匆背,居然都是意外死亡呼伸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門钝尸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來括享,“玉大人,你說我怎么就攤上這事珍促×逑剑” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵踢星,是天一觀的道長澳叉。 經(jīng)常有香客問我隙咸,道長,這世上最難降的妖魔是什么成洗? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任五督,我火速辦了婚禮,結(jié)果婚禮上瓶殃,老公的妹妹穿的比我還像新娘充包。我一直安慰自己,他們只是感情好遥椿,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布基矮。 她就那樣靜靜地躺著,像睡著了一般冠场。 火紅的嫁衣襯著肌膚如雪家浇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天碴裙,我揣著相機與錄音钢悲,去河邊找鬼。 笑死舔株,一個胖子當著我的面吹牛莺琳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播载慈,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惭等,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了办铡?” 一聲冷哼從身側(cè)響起辞做,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎料扰,沒想到半個月后凭豪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡晒杈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了孔厉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拯钻。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖撰豺,靈堂內(nèi)的尸體忽然破棺而出粪般,到底是詐尸還是另有隱情,我是刑警寧澤污桦,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布亩歹,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏小作。R本人自食惡果不足惜亭姥,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顾稀。 院中可真熱鬧达罗,春花似錦、人聲如沸静秆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抚笔。三九已至扶认,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間殊橙,已是汗流浹背辐宾。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蛀柴,地道東北人螃概。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像鸽疾,于是被迫代替她去往敵國和親吊洼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

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