前言:
為了偉大的裝X,最近一直在研究iOS逆向工程,逆向工程可以做到很多事情也可以讓你更好的了解iOS底層實現(xiàn)原理,玩別家的應(yīng)用,么事做個自動搶紅包?或者是為自己的應(yīng)用進行相應(yīng)的加固。所以脫殼/砸殼都是在iOS逆向開發(fā)中的必要工作,因為從AppStore直接下載安裝的App是加殼的通俗的說就是加密的,我們無法做后續(xù)的各種分析工作,所以先要脫殼進行解密下面我會以微信應(yīng)用為例子做一個脫殼處理,我會慢慢跟著我的學(xué)習(xí)線路更新博客和大家一起學(xué)習(xí),廢話就不多說了,兄弟們請往下看
應(yīng)用脫殼所需要工具:
| 工具 | 下載地址 | 平臺 |
|---|---|---|
| Openssh | Cydia | 移動端 |
| dumpdecrypted | 下載地址 | Mac |
| class-dump | 下載地址 | Mac端 |
| Cycript | Cydia | 移動端 |
Openssh安裝及使用
- 越獄移動端Cydia應(yīng)用中搜索Openssh安裝即可
dumpdecrypted安裝及使用
- cd到dumpdecrypted目錄下
- 運行make命令生成“dumpdecrypted.dylib”
class-dump安裝及使用
- 前往usr/bin
- 將class-dump 拖到/usr/bin
需要注意:
問題1:class-dump無法拖入/usr/bin目錄
原因:Mac當(dāng)前系統(tǒng)為Mac OS X 10.11 El Capitan,對于Mac OS X 10.11 El Capitan用戶,由于系統(tǒng)啟用了SIP(System Integrity Protection), 導(dǎo)致root用戶也沒有權(quán)限修改/usr/bin目錄。
解決辦法:重啟Mac,按住command+R,進入recovery模式。選擇打開Utilities下的終端,輸入:csrutil disable并回車,然后正常重啟Mac即可。
問題2:使用class-dump權(quán)限問題
解決辦法:sudo chmod 777
開始破殼
-
ssh登錄移動端
ssh root@XX.XX.XX.XX //默認(rèn)密碼:alpine

ssh登錄移動端.png
-
查看進程
ps -e

查看進程.png
-
獲取應(yīng)用進程
WeCht進程ID.png -
注入應(yīng)用進程
cycript -p XXX //XXX:進程ID 1490

注入WeCht進程.png
-
獲取應(yīng)用沙盒路徑
[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]

獲取沙盒路徑.png
-
退出ssh登錄
logout //退出ssh登錄

退出ssh登錄.png
注意:退出ssh登錄之前需要先退出cycript模式 退出方法:control+d
-
上傳dumpdecrypted.dylib到目標(biāo)程序沙盒
scp XXX/dumpdecrypted.dylib root@10.10.242.107:XXX //sap dumpdecrypted.dylib路徑 root@10.10.242.107:目標(biāo)應(yīng)用沙盒路徑

上傳dumpdecrypted.png
-
上傳成功ssh登錄移動端cd到沙盒目錄進行脫殼
su mobile //防止報錯 killed:9 DYLD_INSERT_LIBRARIES=XXX //目標(biāo)應(yīng)用進程路徑

應(yīng)用脫殼.png

脫殼后的包.png
-
把脫殼后的包導(dǎo)出到Mac端
scp ssh root@172.20.10.4:XXX XXX // XXX:WeChat.decrypted路徑 XXX:目標(biāo)路徑

導(dǎo)出脫殼包.png
- cd到WeChat.decrypted路徑導(dǎo)出.h文件
class-dump -S -s -H WeChat.decrypted -o ./Headers

頭文件.png
總結(jié)
- 獲取進程前移動端先打開應(yīng)用,最好是殺死所有進程只保留目標(biāo)應(yīng)用
- 獲取到進程ID,進程路徑,沙盒路徑 記起來方便使用
- ssh登錄首先是和Mac端使用同一網(wǎng)絡(luò)
