2020 iOS 逆向學習-砸殼(更新:20200408)

網上關于 iOS 應用砸殼相關的博客,非常多,但都存在一些問題。

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

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

預備知識

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

越獄設備

本次學習,選擇的是 iOS 13.3.1 的 iPad mini4, A8 芯片 ARMv8 架構

iOS12-13越獄教程

其中要注意兩點

  1. checkra1n 屬于不完美越獄,與完美越獄的區別是如果設備重啟了,將會回到未越獄狀態,需要重新越獄。
  2. 注意越獄成功后,在手機上使用 checkra1n app下載 cydia 時,可以使用 4G 網絡,可以大幅加快下載速度。

frida 砸殼

為什么要砸殼?

這是因為應用上傳至App Store后,蘋果會對應用的代碼部分進行加密,當應用運行時才會動態解密, 在這樣的情況下是無法直接使用后面講到的class-dump和IDA進行分析的。所以,在分析應用之前,要把應用加密的內容解密,然后把應用和解密后的可執行文件導出到計算機中。

這里我不會使用網上經常出現的 dumpdecryptedClutch,而是使用了 frida

1 iOS 端配置

  1. 在越獄設備上,打開 cydia,添加源 https://build.frida.re
  2. 打開添加的源,找出 frida 進行安裝,其中會列出 3 個軟件,分別是 Frida for 32-bit devicesFrida for A12+ devicesFrida for pre-A12 devices 三個,請根據越獄設備的實際 CPU 類型,進行選擇,本文中使用的 iPad mini 4 是 A8 芯片,所以安裝了第三項
  3. 安裝完成后,可在ssh終端運行 frida-ps -U 查看,是否成功(實測,command not found 應該也不影響后續的使用)

2 MAC 端配置

Anaconda

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

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

  1. 搜索并安裝 Anaconda 軟件
  2. 安裝完成后,建議不使用軟件自帶的 Python,而是自己 create environment,這里配置環境 Python 3.7,并為環境取名 zyy
  3. 配置完成后,點擊對應 zyy 環境的三角箭頭,打開終端,這個終端就會有你安裝的 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. 如果在上一步出現 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 設備的端口映射

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

砸殼

  1. 確保 iOS 設備一直保持 USB 連接,并將想要砸殼的應用打開,保證顯示在前臺,否則可能出現找不到應用,導致砸殼失敗
  2. 使用 Anaconda 的 zyy 環境另開一個新的終端
  3. cd 到之前下載的 frida-ios-dump 目錄
  4. 執行 ./dump.py 微信(這里將微信改成你想砸殼的應用名即可)
  5. 如果發現應用名稱重復了怎么辦?終端執行 ./dump.py -l 可以查看已安裝的應用名稱和對應的 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  設置                         com.apple.Preferences
    -  CrashReporter              crash-reporter
    -  Cydia                      com.saurik.Cydia
    -  通訊錄                        com.apple.MobileAddressBook
    -  郵件                         com.apple.mobilemail
    -  音樂                         com.apple.Music
  1. 執行如下命令,對指定的 bundle id 應用進行砸殼,./dump.py -b com.tencent.xin
  2. 砸殼成功,可以在 frida-ios-dump 目錄下找到 xxx.ipa

如何判斷 ipa 是否有殼

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

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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,345評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,494評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,283評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,953評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,714評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,410評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,940評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,776評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,210評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,654評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容