準(zhǔn)備
首先你要有一臺(tái)越獄機(jī),純屬?gòu)U話!其次確認(rèn)越獄機(jī)上的 SSH、SCP、Cycript 工具可用,接下來就可以開啟奇妙的砸殼之旅了!
將砸殼進(jìn)行到底
編譯簽名 dumpdecrypted
- 下載 dumpdecripted 源碼
MYMacBook:Desktop jiaxw$ git clone git@github.com:stefanesser/dumpdecrypted.git - cd 到
dumpdecripted目錄,輸入make直接編譯
友情提示:許多資料說 Xcode SDK 版本要與越獄手機(jī) iOS SDK 版本一致。筆者測(cè)試,不一致編譯的MYMacBook:Desktop jiaxw$ cd dumpdecrypted/ MYMacBook:dumpdecrypted jiaxw$ makedumpdecripted.dylib也可用。如不能使用,請(qǐng)下載與 iOS 系統(tǒng)版本對(duì)應(yīng)的 Xcode,并修改Makefile中的SDK路徑,重新編譯。修改后的Makefile如下:GCC_BIN=`xcrun --sdk iphoneos --find gcc` GCC_UNIVERSAL=$(GCC_BASE) -arch armv7 -arch armv7s -arch arm64 SDK=/the root path of your Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk - 為編譯生成的
dumpdecrypted.dylib簽名
曾記得在 iOS 9 砸殼時(shí),dumpdecrypted.dylib沒簽名也可用。在 iOS 10時(shí),提示以下錯(cuò)誤:dyld: could not load inserted library 'dumpdecrypted.dylib' because no suitable image found. Did find: dumpdecrypted.dylib: required code signature missing for 'dumpdecrypted.dylib'- 輸入下面命令,獲取開發(fā)者賬號(hào)信息
MYMacBook:dumpdecrypted jiaxw$ security find-identity -v -p codesigning 1) 58E55DB5A7A35CE9ECF6601FE6C6166FDBB7555C "iPhone Developer: xxxxxx@163.com (xxxxxxxxxx)" - 使用
codesign為dumpdecrypted.dylib簽名MYMacBook:dumpdecrypted jiaxw$ codesign --force --verify --verbose --sign "iPhone Developer: iPhone Developer: xxxxxx@163.com (xxxxxxxxxx)" dumpdecrypted.dylib dumpdecrypted.dylib: signed Mach-O universal (armv7 armv7s arm64) [dumpdecrypted]
- 輸入下面命令,獲取開發(fā)者賬號(hào)信息
砸殼
- 使用
scp工具,將簽名后的dumpdecrypted.dylib傳輸?shù)皆姜z手機(jī)MYMacBook:dumpdecrypted jiaxw$ scp dumpdecrypted.dylib root@192.168.31.87:~/ - 使用
ssh登錄連接到越獄手機(jī)MYMacBook:dumpdecrypted jiaxw$ ssh root@192.168.31.87 - 啟動(dòng)要砸殼的 App,以微信為例,查找其安裝路徑,后面砸殼時(shí)要輸入此路徑。如若不知道啟動(dòng) App 的進(jìn)程名,輸入
ps -e即可iPhone6s:~ root# ps -e | grep WeChat 4308 ?? 0:00.58 /var/containers/Bundle/Application/6F92D215-8F9B-470E-93DB-10EFA9D72455/WeChat.app/WeChat - 將 cycript 注入微信進(jìn)程,獲取微信沙盒
Documents路徑iPhone6s:~ root# cycript -p WeChat cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0] #"file:///var/mobile/Containers/Data/Application/3B83C7FD-3D73-4FEF-B33E-51CE76685E53/Documents/" - 輸入
Control+D,退出cycript - cd 到上面獲取的
Documents目錄root# cd /var/mobile/Containers/Data/Application/3B83C7FD-3D73-4FEF-B33E-51CE76685E53/Documents/ - 將
dumpdecrypted.dylib拷貝到Documents目錄cp ~/dumpdecrypted.dylib ./ - 萬事俱備,只待砸殼,執(zhí)行下面命令
root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/6F92D215-8F9B-470E-93DB-10EFA9D72455/WeChat.app/WeChat - 上述命令運(yùn)行完畢后,輸入
ls查看當(dāng)前目錄文件,WeChat.decrypted即為砸殼后的二進(jìn)制文件
總結(jié)
本文主要記述了使用 dumpdecrypted 砸殼過程。除了 dumpdecrypted,常用的砸殼工具,還有大名鼎鼎的 Clutch,AloneMonkey大神的 frida-ios-dump。其中 Clutch 簡(jiǎn)單易用,但不甚穩(wěn)定,對(duì)一些較大的 App 砸殼時(shí)常失敗,比如微信。frida-ios-dump 穩(wěn)定可靠,操作極其方便,砸殼后直接將 ipa 文件傳輸電腦端,但環(huán)境配置起來比較復(fù)雜,手機(jī)端需要安裝frida-server,有三十多兆,占用不少系統(tǒng)盤資源,一些低端機(jī)比較吃緊。dumpdecrypted 使用也很穩(wěn)定,不需要復(fù)雜的環(huán)境配置,但 dumpdecrypted 砸殼后只能獲取解密的二進(jìn)制執(zhí)行文件,復(fù)制一份原有 app 包,用解密后的二進(jìn)制文件替換原有文件,可以獲取完整解密 app包??傊?code>dumpdecrypted 操作起來相較其他兩款砸殼工具復(fù)雜很多,但在這復(fù)雜的過程中我們能學(xué)到更多東西!