前言:
為了偉大的裝X,最近一直在研究iOS逆向工程,逆向工程可以做到很多事情也可以讓你更好的了解iOS底層實現原理,玩別家的應用娇未,么事做個自動搶紅包平夜?或者是為自己的應用進行相應的加固段直。所以脫殼/砸殼都是在iOS逆向開發(fā)中的必要工作螺垢,因為從AppStore直接下載安裝的App是加殼的通俗的說就是加密的庐冯,我們無法做后續(xù)的各種分析工作栖茉,所以先要脫殼進行解密下面我會以微信應用為例子做一個脫殼處理隙袁,我會慢慢跟著我的學習線路更新博客和大家一起學習娜饵,廢話就不多說了拳亿,兄弟們請往下看
應用脫殼所需要工具:
工具 | 下載地址 | 平臺 |
---|---|---|
Openssh | Cydia | 移動端 |
dumpdecrypted | 下載地址 | Mac |
class-dump | 下載地址 | Mac端 |
Cycript | Cydia | 移動端 |
Openssh安裝及使用
- 越獄移動端Cydia應用中搜索Openssh安裝即可
dumpdecrypted安裝及使用
- cd到dumpdecrypted目錄下
- 運行make命令生成“dumpdecrypted.dylib”
class-dump安裝及使用
- 前往usr/bin
- 將class-dump 拖到/usr/bin
需要注意:
問題1:class-dump無法拖入/usr/bin目錄
原因:Mac當前系統為Mac OS X 10.11 El Capitan,對于Mac OS X 10.11 El Capitan用戶,由于系統啟用了SIP(System Integrity Protection), 導致root用戶也沒有權限修改/usr/bin目錄涌哲。
解決辦法:重啟Mac初烘,按住command+R,進入recovery模式缸剪。選擇打開Utilities下的終端,輸入:csrutil disable并回車,然后正常重啟Mac即可。
問題2:使用class-dump權限問題
解決辦法:sudo chmod 777
開始破殼
-
ssh登錄移動端
ssh root@XX.XX.XX.XX //默認密碼:alpine
-
查看進程
ps -e
-
獲取應用進程
-
注入應用進程
cycript -p XXX //XXX:進程ID 1490
-
獲取應用沙盒路徑
[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
-
退出ssh登錄
logout //退出ssh登錄
注意:退出ssh登錄之前需要先退出cycript模式 退出方法:control+d
-
上傳dumpdecrypted.dylib到目標程序沙盒
scp XXX/dumpdecrypted.dylib root@10.10.242.107:XXX //sap dumpdecrypted.dylib路徑 root@10.10.242.107:目標應用沙盒路徑
-
上傳成功ssh登錄移動端cd到沙盒目錄進行脫殼
su mobile //防止報錯 killed:9 DYLD_INSERT_LIBRARIES=XXX //目標應用進程路徑
-
把脫殼后的包導出到Mac端
scp ssh root@172.20.10.4:XXX XXX // XXX:WeChat.decrypted路徑 XXX:目標路徑
- cd到WeChat.decrypted路徑導出.h文件
class-dump -S -s -H WeChat.decrypted -o ./Headers
總結
- 獲取進程前移動端先打開應用,最好是殺死所有進程只保留目標應用
- 獲取到進程ID靠闭,進程路徑檩淋,沙盒路徑 記起來方便使用
- ssh登錄首先是和Mac端使用同一網絡