加殼
App 提交至 AppStore 后,App里的可執(zhí)行程序(MachO)被加密了,這樣可以保證機器上跑的應用是蘋果審核過的,也可以管理軟件授權。經過AppStore加密的應用,我們無法通過Hopper等反編譯靜態(tài)分析,也無法Class-Dump。
檢查是否加密
使用otool 查看二進制文件,如對砸過殼的QQMusic可執(zhí)行程序:

cryptid 值為0, 表示未加密;
而從AppStore上下載的未砸過殼的QQMusic,cryptid = 1, 如下所示:

砸殼
對加密的二進制文件進行解密,被稱作砸殼。包括
(1)靜態(tài)砸殼:在不運行殼應用程序的前提下進行解密處理。需知道加密的方法,難度大。
(2)動態(tài)砸殼:從運行在進程內存空間中的可執(zhí)行程序映像(Image)入手,將內存中的內容進行轉儲(dump)來實現(xiàn)脫殼處理。不需要關心加密方法,相對簡單。
砸殼實踐
手機: iPhone6s plus, iOS9.0.2, 已越獄。無法再從AppStore下載App了,只能先從iTunes中先下載app,再appy到手機上。
總結:依次實踐了 Clutch,dumpedcrypted,frida-ios-dump 這3種砸殼方式。Clutch最簡單,但很多砸不了;dumpedcryped能砸,安裝簡單,但使用時步驟較繁瑣;frida-ios-dump安裝環(huán)境復雜,但使用簡單,砸殼成功率也高(WeChat, Alipay都成功了)。
1. Clutch
主要參考 https://www.freebuf.com/column/204508.html
1)下載https://github.com/KJCracks/Clutch/releases最新的 Clutch2.0.4 源碼,按照 https://github.com/KJCracks/Clutch
里Building的步驟,依次操作,在Compiling步時,cd /Clutch-2.0.4后到執(zhí)行 xcode clean build,可以看到Clutch下生成了可執(zhí)行程序clutch.

2)copy clutch到手機的/usr/bin下,必要時賦予可執(zhí)行權限。
3)執(zhí)行 Clutch -I

4)執(zhí)行
Clutch -d 4 對Spotify進行砸殼:

2. dumpdecrypted
主要參考:https://blog.csdn.net/boring_cat/article/details/79422086, 使用wifi連接ssh。
1) 至 https://github.com/stefanesser/dumpdecrypted 下載源碼
2) 執(zhí)行 make命令,相同目錄下生成 dumpdecrypted.dylib 文件
3) 查找要砸殼的app(QQMusic)的沙盒路徑:

/var/mobile/Containers/Data/Application/D8B7C29C-2733-43AC-9D25-6720CA7FAC6F;使用scp將dylib拷貝到該Document目錄下:
scp dumpdecrypted.dylib root@192.168.2.4:/var/mobile/Containers/Data/Application/D8B7C29C-2733-43AC-9D25-6720CA7FAC6F/Documents
4)運行QQMusic后,使用
ps -e 得到QQMusic的可執(zhí)行文件路徑:
5)cd 到沙盒/Documents下,執(zhí)行如下拼湊的命令:
DYLD_INSERT_LIBRARIES=dumpedcrypted.dylib /var/mobile/Containers/Bundle/Application/6889BB15-498C-47BA-B954-E471DB519C6C/QQMusic.app/QQMusic
執(zhí)行完后,console打印了如上的log, Documents目錄下生成了砸殼后的文件:

6)將QQMusic.decrypted拷貝到Mac,該文件即為砸殼后的二進制可執(zhí)行文件(可將后綴去掉)。也可以再使用lipo從中提取出特定架構的可執(zhí)行文件: (可不做)
lipo QQMusic.decrypted -thin arm64 -output QQMusic_decrypted_arm64 。
經測試,該方法可以對Neteasemusic進行砸殼。

3. frida-ios-dump
先是想按照 http://bbs.iosre.com/t/frida/11988/41 提供的https://github.com/ChiChou/frida-ipa-dump/
來一鍵砸殼,結果發(fā)現(xiàn)出現(xiàn)問題:

與別人上報的Issues相同,遂放棄。
改用 https://www.freebuf.com/column/204508.html
里的friad-ios-dump一章的方法:(這里只做簡單說明)
1)安裝 PC 端各配置,pip, usbmuxd。(之前安裝了anaconda3及其他python庫)
2)安裝 frida for PC:
sudo pip install Frida
sudo pip install frida-tools
3)手機端安裝Frida
4)usb連接手機,PC中 執(zhí)行 frida-ps -U驗證兩端Frida都安裝成功

5)配置frida-ios-dump環(huán)境:
https://github.com/AloneMonkey/frida-ios-dump/tree/3.x
記得選擇zip包下載

執(zhí)行
sudo pip install -r requirements.txt --upgrade
6)準備開始砸殼:
(1)pc端使用iproxy改監(jiān)聽端口:

(2)另起一個iTerm,ssh 連接到手機:

(3)再起一個iTerm, cd到 frida-ios-dump-3.x下:執(zhí)行
./dump.py -l
(4) 找到要砸殼的app,比如WeChat。 在iPhone上打開WeChat,然后iTerm里執(zhí)行
./dump.py WeChat

修改WeChat.ipa后綴為 .rar,解壓縮后,驗證一下:

砸殼成功!