iOS 逆向工程(十三)之加殼與脫殼/砸殼


加殼:利用特殊算法,對可執行文件的編碼進行改變(壓縮、加密),達到保護程序代碼的目的

脫殼:去掉殼程序,將未加密的可執行文件還原出來,或者稱砸殼

脫殼方式:硬脫殼、動態脫殼

脫殼工具:Clutch(棄用)、dumpdecrypted(棄用)、frida、crakerx、flexdecrypt、bagbak

手機安裝App的ipa文件位置:/var/containers/Bundle/Application/

判斷是否加密: otool -l  Mach-O文件名 | grep crypt

flexdecrypt安裝:

下載地址:https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb

 

安裝方式一:

1.下載flexdecrypt.deb文件;

2.將flexdecrypt.deb 拷貝到手機的 /var/root/Media/Cydia/AutoInstall目錄;

3.在手機上通過Filza資源管理工具定位到 /var/root/Media/Cydia/AutoInstall ,點擊安裝;

4.遠程登錄iPhone5s,輸入 killall SpringBoard (重啟手機桌面)回車;

5.登錄手機終端條件下,輸入 flexdecrypt 回車;

 

安裝方式二:

1.登錄手機終端后,直接輸入 wget https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb

2.輸入安裝指令 dpkg -i flexdecrypt.deb 回車;

 

脫殼/砸殼操作:

1.登錄iPhone5s后,輸入 ps -A 回車,尋找要脫殼的的軟件;

2.輸入指令 flexdecrypt /var/containers/Bundle/Application/1EB14B56-6B19-442F-8289-A7A5D8290E5E/MobileMail.app/MobileMail 回車;

3.將 /tmp/MobileMail 路徑下的 MobileMail 拷貝到Mac 工作文件夾, 用Hopper Disassembler 查看脫殼后的Mach-O文件

a.在Mac終端輸入 scp -P 10010 root@localhost:"/tmp/MobileMail" ~/Desktop/jail_work 回車

b.Hopper Disassembler 查看Mach-O文件

 

Tips:不是所有的App都能使用flexdecrypt脫殼:WeChat、Aweme、唱吧脫殼失敗,后續查找原因

 

另一種脫殼方式:frida-ios-dump

涉及設備:MacBook、iPhone5s(越獄,A7處理器,ARM64)

下載地址:https://github.com/AloneMonkey/frida-ios-dump

安裝步驟:

iPhone端准備:

1.打開Cydia 【軟件源】-->【編輯】-->【添加】,輸入 https://build.frida.re 完成;

2.在軟件源下,點擊 【bulid.frida.re 】-->【全部軟件包(或者開發)】選擇 【Frida for pre-A12 devices】(根據手機CPU型號選擇,5s是A7小於A12) 安裝;

3.安裝完成后,在Mac終端登錄iPhone端,輸入 killall SpringBoard (重啟手機桌面)回車

 

注意:不需要在手機終端輸入frida-ps -U ,會報 -sh: frida-ps: command not found 錯誤,frida-ps -U 檢查安裝成功指令是在Mac終端使用的

 

Mac端准備:

1.在終端輸入 sudo pip install frida 回車,安裝完成后輸入 frida-ps -U 回車檢測;

 

2.下載 frida-ios-dump 到 /opt/dump/ 文件夾下,輸入 sudo mkdir /opt/dump && cd /opt/dump && sudo git clone https://github.com/AloneMonkey/frida-ios-dump 回車;

 

3.添加firda-ios-dump 的依賴,輸入 sudo pip install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade 回車;

 

4.修改 dump.py 的iPhone端關於USB端口號(22)映射到Mac端的端口(10010)和登錄用戶名及密碼,輸入 vim /opt/dump/frida-ios-dump/dump.py 回車;

 

5.設置指令別名;

a.在終端輸入 vim ~/.bash_profile 回車;

b.在 alias python 下面添加 alias dump.py="/opt/dump/frida-ios-dump/dump.py”,按 “:”鍵后 輸入 wq 回車;

c.生效配置文件,輸入 source ~/.bash_profile 回車

 

注意:在設置指令別名的時候,由於我的bash_profile 文件是指向python3版本,所以在使用dump.py 指令的時候會報 ModuleNotFoundError: No module named 'frida' 錯,python3 版本下 dump.py 依賴frida出了點問題(默認安裝的是python2 版本的frida), 解決思路有兩種:a.重新配置bash_profile 文件的Python 執行版本路徑,b.使用python2 來執行dump.py

報錯:

 

脫殼/砸殼操作:

1.在Mac終端輸入 cd /opt/dump/frida-ios-dump/ 回車;

2.打開iPhone上需要脫殼的程序;

3.在終端輸入 python2 dump.py 【App Name】回車

 

Hopper Disassembler 查看Mach-O文件:

 

注意:由於 frida-ios-dump 文件夾是readonly 屬性,在脫殼后會報 zip I/O error: Permission denied 錯誤

 

Permission denied解決方式:

1.將 /opt/dump/frida-ios-dump/ 下文件 dump.py 的內容拷貝一份出來,新建一個dump.py文件並粘貼拷貝的內容;

 

2.新建一個保存路徑放在43行后,內容為 SAVE_PATH = os.path.join(os.path.expanduser("~"), 'Desktop') 將存儲路徑指向桌面;

 

3.修改生成ipa文件的路徑為SAVE_PATH;

 

4.將新建的dump.py文件替換 /opt/dump/frida-ios-dump/ 下的dump.py文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM