iOS 安全 - 砸殼

加殼

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

檢查是否加密
使用otool 查看二進制文件,如對砸過殼的QQMusic可執(zhí)行程序:

image.png

cryptid 值為0, 表示未加密;

而從AppStore上下載的未砸過殼的QQMusic,cryptid = 1, 如下所示:


image.png

砸殼

對加密的二進制文件進行解密,被稱作砸殼。包括
(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.

image.png

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

image.png

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

按此方法,也可以對手機內的QQ音樂砸殼,但網易音樂失敗了,應該是做了保護:
image.png

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)的沙盒路徑:

image.png
這里使用cycript注入 (ctr+d 退出cycript輸入狀態(tài))到QQMusic里,打印出App的Home沙盒路徑為:/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
image.png
(也可使用iFunBox直接查找和拷貝,更方便)
4)運行QQMusic后,使用ps -e 得到QQMusic的可執(zhí)行文件路徑:
image.png
注意,這個路徑和沙盒是不同的。
5)cd 到沙盒/Documents下,執(zhí)行如下拼湊的命令:
DYLD_INSERT_LIBRARIES=dumpedcrypted.dylib /var/mobile/Containers/Bundle/Application/6889BB15-498C-47BA-B954-E471DB519C6C/QQMusic.app/QQMusic
image.png

執(zhí)行完后,console打印了如上的log, Documents目錄下生成了砸殼后的文件:

image.png

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

經測試,該方法可以對Neteasemusic進行砸殼。


image.png

3. frida-ios-dump

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

image.png

與別人上報的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都安裝成功

image.png

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

image.png

執(zhí)行 sudo pip install -r requirements.txt --upgrade
image.png

6)準備開始砸殼:
(1)pc端使用iproxy改監(jiān)聽端口:

image.png

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

(3)再起一個iTerm, cd到 frida-ios-dump-3.x下:執(zhí)行./dump.py -l
image.png

(4) 找到要砸殼的app,比如WeChat。 在iPhone上打開WeChat,然后iTerm里執(zhí)行 ./dump.py WeChat
image.png

image.png

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

砸殼成功!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 砸殼 軟件脫殼,顧名思義,就是對軟件加殼的逆操作,把軟件上存在的殼去掉(解密)。 砸殼原理 應用加殼(加密)提交給...
    looha閱讀 1,618評論 0 2
  • 概述 軟件脫殼,顧名思義,就是對軟件加殼的逆操作,把軟件上存在的殼去掉(解密)。 砸殼原理 應用加殼(加密)提交給...
    沒八阿哥的程序閱讀 7,444評論 0 2
  • 技 術 文 章 / 超 人 App Store上的應用都使用了FairPlay DRM數(shù)字版權加密保護技術Fair...
    樹下敲代碼的超人閱讀 21,329評論 21 55
  • 一、概述 從App Store下載的應用是加過殼的,加殼的應用是不能直接執(zhí)行的,手機之所以能夠使用下載的app,是...
    heart_領閱讀 1,324評論 0 2
  • 逆向工具集的安裝和使用 iOS 逆向工程的工具分類 檢查工具如:Reveal(界面分析工具)、tcpdump(抓包...
    Yochi閱讀 6,105評論 1 5

友情鏈接更多精彩內容