最新版的越獄砸殼動態調試

目前針對iOS14,checkra1n能做到最簡潔的一鍵不完美越獄。

ios手機端配置

  1. 手機端cydia 添加源:https://build.frida.re
  2. 搜索Frida,進行安裝
  3. 安裝成功驗證
iPhone:~ root# ps -ax | grep frida    
  409 ??         0:00.89 /usr/sbin/frida-server
 2050 ttys000    0:00.01 grep frida

ps -ax | grep frida 為執行命令,看到如上打印即可

Mac端

我們需要安裝python ,pip ,frida ,frida-tools。由于Mac自帶的Python版本為2.7.x.不建議使用了,因此安裝了Python3.7.7版本。如下:

  1. brew install wget //安裝wget
  2. wget https://bootstrap.pypa.io/get-pip.py
  3. sudo python3 get-pip.py
  4. sudo pip3 install frida //安裝frida
  5. sudo pip3 install frida-tools //安裝frida

配置frida-ios-dump環境

  1. 從github下載代碼命令: sudo mkdir /opt/dump && cd /opt/dump && sudo git clone https://github.com/AloneMonkey/frida-ios-dump
  2. 根據插件文檔equirements.txt安裝依賴 :sudo pip3 install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade
  3. dump.py 中默認參數第35行的User,Password,Host,Port可按需進行修改

連接iPhone設備

brew安裝usbmuxd,usbmuxd自帶工具iproxy,iproxy可以快捷連接iPhone操作

iproxy 2222 22  //執行如下命令把當前連接設備的22端口(SSH端口)映射到電腦的2222端口,那么想和設備22端口通信,直接和本地的2222端口通信就可以

Cydia 安裝 openSSH,另開終端進程

ssh -p 2222 root@127.0.0.1

砸殼

  1. python3 dump.py -l           //查看所有app獲取對應bundleID
    
  2. python3 dump.py bundleID  //執行完成在當前目錄生成ipa
    
  3. otool -l XXX | grep crypt //查看是否脫殼,該信息在LC_ENCRYPTION_INFO_64 Segment中
    

class-dump

  1. 下載對應版本:http://stevenygard.com/projects/class-dump/
  2. open /usr/local/bin 打開終端,將class-dump文件復制到/usr/local/bin
  3. 更改權限 sudo chmod 777 /usr/local/bin/class-dump
  4. 使用:class-dump -H app文件路徑 -o 頭文件保存路徑
  5. 只能針對純OC,對于Swift 混編代碼則會提示:Error: Cannot find offset for address XXX in stringAtAddress:

Reveal

  1. Cydia安裝Reveal2Loader
  2. 在設置中允許需要調試的App
  3. Mac端安裝Reveal
  4. 在Help-Show Reveal Library in Finder中找到對應版本的RevealServer,復制到設備中: scp -r /Users/XXX/RevealServer.xcframework/ios-arm64_i386_x86_64-simulator/RevealServer.framework root@127.0.0.1:/Library/Frameworks 或者通過其他助手復制到Library/Frameworks中都是可以的

動態調試

手機端App通過debugserver與Mac端的LLDB經過USB進行數據傳輸

這里有兩種方式:一種是用Xcode來進行調試,因為Xcode只能調試開發者自己證書的應用,所以需要重簽名App;另一種是命令行調用lldb來調試,需要對 debugserver 賦予更高的權限,因為默認的 debugserver 也只能調試自己證書的App

通過Xcode:

  1. 打開 Xcode ,新建一個 demo, 并插上真機,完成 demo 在真機的調試
  2. ls ~/Library/MobileDevice/Provisioning\ Profiles 找到demo的描述文件
  3. 下載重簽名軟件 iReSign
  4. 重簽名,分別填入砸殼后的ipa,demo的描述文件,demo的BundleID,勾選修改ID,對應的證書
  5. 原路徑下生成重簽包,如果包含appex,需要針對每一個ID進行修改;或者暴力一點直接刪除 Plugins 文件夾和 Watch文件夾
  6. 把重簽名的App安裝到手機上并運行
  7. Xcode - Debug - Attach to Process by PID or Name 輸入進程ID或者名稱即可進入調試

通過debugserver + lldb:

  1. 使用iproxy將接設備的端口(SSH)映射到電腦端口 iproxy 2222 22

  2. SSH到USB設備 ssh -p 2222 root@127.0.0.1

  3. 將設備的debugserver拷貝到電腦端 scp -P2222 root@127.0.0.1:/Developer/usr/bin/debugserver ~/Desktop

  4. 安裝ldid brew install ldid

  5. 拷貝如下代碼,保存成ent.xml,放到同一級目錄下,該xml實際上就是給debugserver添加了task_for_pid權限

    <plist version="1.0">
    <dict>
    <key>com.apple.springboard.debugapplications</key>
    <true/>
    <key>get-task-allow</key>
    <true/>
    <key>task_for_pid-allow</key>
    <true/>
    <key>run-unsigned-code</key>
    <true/>
    </dict>
    </plist>
    
  6. 執行 ldid -Sent.xml debugserver 進行簽名

  7. 將增加權限的debugserver拷貝回設備 scp -P2222 ~/debugserver root@127.0.0.1:/usr/bin/debugserver

  8. ps -ef 查看當前的進程列表

  9. 執行 debugserver *:1234 -a prossesname/pid 將debugserver附加到進程,并開啟1234端口,等待來自IP的LLDB接入

  10. 在Mac系統執行 iproxy 1234 1234 將本地端口映射到手機端口

  11. 在Mac系統啟動lldb然后執行 process connect connect://localhost:1234

  12. image list -o -f 找到對應進程的基地址,再配合靜態分析獲取到的偏移地址就可以動態調試了

  13. 如遇到error: rejecting incoming connection from ::ffff:127.0.0.1 (expecting ::1)報錯,則可將第9步改為debugserver 127.0.0.1:1234 XXX

  14. 如遇到error: failed to get reply to handshake packet 報錯,則可將第9步把debugserver啟動試設置的監聽 *:1234 改成 localhost:1234


    另附上 設備文件結構

  • ./Applications:存放系統默認預裝的應用,不包括從App Store下載安裝的應用
  • ./Developer:存放與開發調試相關的文件和工具二進制文件,當設備連接Xcode時選擇了“Use for Development”才會被創建
  • ./Library:存放系統應用數據、幫助文件、文檔等
    • ./Library/Keychains:設備系統級密碼等存放目錄
    • ./Library/Logs:系統日志存放目錄,./var/logs也指向此目錄
    • ./Library/Logs/CrashReporter:系統進程崩潰日志目錄
  • ./System:只包含一個名為Library的目錄,這個子目錄中存放了系統的絕大部分組件,如各種framework,內核模塊,字體文件等
    • ./System/Library/LaunchDaemon:系統啟動進程plist文件存放目錄,若想不啟動某進程,刪除該目錄下對應的plist的文件(操作需慎重,刪除之前先備份)
    • ./System/Library/Frameworks:公有框架(開發者可使用)存放目錄
    • ./System/Library/PrivateFrameworks:私有框架(開發者不可使用)存放目錄
    • ./System/Library/CoreServices/SpringBoard.app:桌面管理器應用,用戶與系統交互的中介
  • ./User:用戶目錄,存放用戶的個人資料和配置,iOS中實際指向/var/mobile
  • ./bin:“binary”的簡稱,存放傳統Unix命令(用戶級基礎功能二進制文件)
  • ./boot:存放能使系統成功啟動的所有文件,iOS中此目錄為空
  • ./cores:內核轉儲文件存放目錄,當一個進程崩潰時,如果系統允許則會產生轉儲文件
  • ./dev:“device”的簡稱,存放BSD設備文件。每個文件代表系統的一個塊設備或字符設備
  • ./etc:“Et Cetera”的簡稱,存放系統腳本及配置文件,如passwd、hosts等。iOS/OS X中/etc實際指向./private/etc
  • ./lib:存放系統庫文件、內核模塊及設備驅動等,iOS中此目錄為空
  • ./mnt:“mount”的簡稱,存放臨時文件系統掛載點,iOS中此目錄為空
  • ./private:存放/etc、/var,/sustem_data,/xarts四個鏈接目錄的目標目錄
  • ./sbin:“system binaries”的簡稱,存放Unix管理類命令(系統級基礎功能的二進制文件),如netstat、reboot、fdisk、ifconfig等
  • ./tmp:存放臨時文件目錄,其權限為所有人任意讀寫,在OS X中實際指向./private/tmp
  • ./usr:存放大量工具和程序,第三方程序安裝目錄,其中./usr/lib中存放了動態鏈接庫
  • ./var:“variable”的簡寫,存放一些經常更改的文件,如日志、用戶數據、臨時文件等,iOS/OS X中./var實際指向./private/var。某些文件在./Library./var都存在,比如Keychains數據、系統日志等
    • ./var/wireless/Library/CallHistory:存放通話記錄,網絡流量,使用時間等記錄
    • ./var/mobile/Containers:存放App Store應用相關文件,其中,子目錄/Bundle存放應用可執行文件,子目錄/Data存放應用數據
    • ./var/mobile/Library/AddressBook:存放聯系人數據
    • ./var/mobile/Library/Calendar:存放日歷及提醒事項記錄文件
    • ./var/mobile/Library/SMS:存放短信
    • ./var/mobile/Library/Safari:存放Safari保存的書簽等
    • ./var/mobile/Media/PhotoStreamsData:存放照片流
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,996評論 2 374