目錄
注意:Clutch、dumpdecrypted適用于完美越獄手機(jī)忘蟹,frida-iOS-dump可用于非完美越獄手機(jī)
一飒房、砸殼
軟件脫殼搁凸,顧名思義,就是對(duì)軟件加殼的逆操作狠毯,把軟件上存在的殼去掉(解密)坪仇。
應(yīng)用加殼(加密)
??提交給Appstore
發(fā)布的App
,都經(jīng)過(guò)官方保護(hù)而加密垃你,這樣可以保證機(jī)器上跑的應(yīng)用是蘋(píng)果審核過(guò)的椅文,也可以管理軟件授權(quán)。經(jīng)過(guò)App Store
加密的應(yīng)用惜颇,我們無(wú)法通過(guò)Hopper
等反編譯靜態(tài)分析皆刺,也無(wú)法Class-Dump
,在逆向分析過(guò)程中需要對(duì)加密的二進(jìn)制文件進(jìn)行解密才可以進(jìn)行靜態(tài)分析凌摄,這一過(guò)程就是大家熟知的砸殼(脫殼)應(yīng)用砸殼(解密)
靜態(tài)砸殼
??靜態(tài)砸殼就是在已經(jīng)掌握和了解到了殼應(yīng)用的加密算法和邏輯后在不運(yùn)行殼應(yīng)用程序的前提下將殼應(yīng)用程序進(jìn)行解密處理羡蛾。靜態(tài)脫殼的方法難度大,而且加密方發(fā)現(xiàn)應(yīng)用被破解后就可能會(huì)改用更加高級(jí)和復(fù)雜的加密技術(shù)
動(dòng)態(tài)砸殼
??動(dòng)態(tài)砸殼就是從運(yùn)行在進(jìn)程內(nèi)存空間中的可執(zhí)行程序映像(image
)入手锨亏,將內(nèi)存中的內(nèi)容進(jìn)行轉(zhuǎn)儲(chǔ)(dump
)處理來(lái)實(shí)現(xiàn)脫殼處理痴怨。這種方法實(shí)現(xiàn)起來(lái)相對(duì)簡(jiǎn)單,且不必關(guān)心使用的是何種加密技術(shù)器予。
iOS應(yīng)用運(yùn)行原理
二浪藻、Clutch
Clutch是由KJCracks開(kāi)發(fā)的一款開(kāi)源砸殼工具。工具支持iPhone乾翔、iPod Touch爱葵、iPad,該工具需要使用iOS8.0以上的越獄手機(jī)應(yīng)用反浓。
Clutch安裝
官網(wǎng): https://github.com/KJCracks/Clutch
Clutch使用
三萌丈、dumpdecrypted
Github開(kāi)源工具。 dumpdecrypted這個(gè)工具就是通過(guò)建立一個(gè)名為dumpdecrypted.dylib的動(dòng)態(tài)庫(kù)雷则,插入目標(biāo)應(yīng)用實(shí)現(xiàn)脫殼辆雾。
安裝
官網(wǎng) :https://github.com/stefanesser/dumpdecrypted 直接Git Clone
四、向進(jìn)程中插入動(dòng)態(tài)庫(kù)
- 創(chuàng)建
InsertDemo
項(xiàng)目并添加一個(gè)Inject Framework
將
Inject.framework
拷貝到Temp文件夾月劈,參照上篇文章通過(guò)USB鏈接到手機(jī)將Inject.framework拷貝到手機(jī)
cd Temp
scp -r -P 12345 Inject.framework root@localhost:/var/root
// 切到連接手機(jī)的終端界面
// 查看Inject.framework是否拷貝到手機(jī)
ls
找到InsertDemo的路徑
ps -A | grep InsertDemo
將
Inject.framework
插入到InsertDemo
中
iOS9.1以后插入framework需要在mobile用戶角色操作度迂,否則會(huì)出現(xiàn)Killed:9
錯(cuò)誤
//su mobile
DYLD_INSERT_LIBRARIES=Inject.framework/Inject /var/containers/Bundle/Application/7E8BE0F1-818A-4163-BD32-3D06AD600EB9/InsertDemo.app/InsertDemo
注意:非自己的APP如微信等通過(guò)以上方法不能插入。
dumpdecrypted
這個(gè)工具就是通過(guò)這種原理進(jìn)行砸殼的艺栈。
五英岭、frida-iOS-dump
該工具基于frida
提供的強(qiáng)大功能通過(guò)注入js
實(shí)現(xiàn)內(nèi)存dump
然后通過(guò)python
自動(dòng)拷貝到電腦生成ipa
文件湾盒。
安裝frida
sudo git clone https://github.com/AloneMonkey/frida-ios-dump
sudo pip install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade
// 查看Mac進(jìn)程
frida-ps
// 查看手機(jī)進(jìn)程
frida-ps -U
// 進(jìn)入微信調(diào)試界面
frida -U 微信
從frida-ios-dump官網(wǎng)可以看到:
Run usbmuxd/iproxy SSH forwarding over USB (Default 2222 -> 22). e.g. iproxy 2222 22
因此通過(guò)USB連接需要映射的端口為2222湿右,或者可以修改dump.py
中將映射的端口修改之前的12345
。這里選擇修改dump.py
文件罚勾。
使用dump.py砸殼
// USB連接手機(jī)----usbConnect.sh
cd /opt/python-client
python tcprelay.py -t 22:12345
// 砸殼-需打開(kāi)微信
cd /Users/ztkj/Desktop/Temp
dump.py 微信
// 獲取頭文件 - 解壓縮ipa包并將MachO文件拖出來(lái) (路徑中不能有中文)
class-dump -H WeChat -o WeChatHeaders/
注意:1毅人、
dump.py
中User吭狡、Password、Host丈莺、Port必須和USB鏈接手機(jī)時(shí)的一致划煮。
???2、由于/opt/MonkeyDev/bin/中有dump.py
和dump.js
文件并且配置了相應(yīng)的環(huán)境變量缔俄,因此dump.py
命令可以在任意目錄執(zhí)行弛秋。
???3、dump微信時(shí)俐载,微信必須在運(yùn)行狀態(tài)蟹略。
補(bǔ)充命令
顯示當(dāng)前命令的路徑
pwd
清除終端連接手機(jī)時(shí)終端中的內(nèi)容(
Command + K
)
clear
,如果沒(méi)有這個(gè)命令遏佣,可使用Cydia
安裝adv-cmds
插件刪除文件
rm -r 文件名
移動(dòng)文件
mv 文件 目標(biāo)路徑
查看命令文件的路徑
which dump.py
查看可執(zhí)行文件是否加密
otool -l WeChat | grep crypt
cryptid 為0 表示為加密挖炬,已被砸殼了。