iOS逆向
iOS目錄結(jié)構(gòu):
Applications :存放所有的系統(tǒng)App和來源自Cydia的App嵌莉,不包括StoreApp疾渣。(重點(diǎn))
Library:存放了一些提供系統(tǒng)支持的數(shù)據(jù)约巷。(重點(diǎn))
User:用戶目錄愉老,實(shí)際指向了/var/mobile驶兜。
boot:存放能使系統(tǒng)成功啟動的所有文件吞鸭,iOS中此目錄為空。
dev:
lib:存放系統(tǒng)庫文件菊值。內(nèi)核模塊及設(shè)備驅(qū)動等外驱。iOS此目錄為空。
private:存放兩個(gè)目錄腻窒,分別是/ect和/var昵宇。
tmp:臨時(shí)目錄。在iOS中儿子,/tmp是一個(gè)符號鏈接瓦哎,實(shí)際指向/private/var/tmp
var:存放一些經(jīng)常更改的文件。/var/moblie和/var/root分別存放了mobile用戶和root用戶的文件柔逼,重點(diǎn)蒋譬。
Developer:如果一臺設(shè)備連接Xcode后被指定為調(diào)試機(jī),xcode就會在iOS中生成這個(gè)目錄卒落,其中會包含一些調(diào)試需要的工具和數(shù)據(jù)羡铲。(重點(diǎn))
System:./System/Library是iOS文件系統(tǒng)中最重要的目錄之一蜂桶,存放了大量的系統(tǒng)組件儡毕。
bin:存放的是提供用戶基礎(chǔ)功能的二進(jìn)制文件。
cores:
etc:
mnt:存放臨時(shí)的文件系統(tǒng)掛載點(diǎn)。iOS此目錄為空腰湾。
sbin:存放提供系統(tǒng)級基礎(chǔ)功能的二進(jìn)制文件雷恃。如reboot。
usr:包含了大多數(shù)用戶工具和程序费坊。/usr/bin包含哪些/bin和/sbin中未出現(xiàn)的基礎(chǔ)功能倒槐,如killall。
重點(diǎn)關(guān)注
./Developer附井、./Library讨越、./System/Library/Frameworks、
System/Library/Frameworks 存放公開的framework(Xcode常用的)永毅,System/Library/PrivateFrameworks存放私有的framework(待破解)
./System/Library/CoreServices里的SpringBoard.app:iOS桌面管理器把跨。
./var/mobile/Media/DCIM存放照片。
/var/moblie/Containers 存放app沼死。
砸殼取出頭文件:砸微信
準(zhǔn)備工具:
- 已越獄手機(jī)(安裝Openssh ,Cycript,usbmuxd)
- Mac端安裝dumpdecrypted砸殼工具着逐,iFunBox, class-dump
配置環(huán)境
一意蛀、生成dumpdecrypted.dylib動態(tài)庫
下載dumpdecrypted耸别,在終端里切到dumpdecrypted所在目錄,輸入make命令县钥,生成dumpdecrypted.dylib文件秀姐,這個(gè)文件是砸殼用的,需要復(fù)制到app沙盒中的Documents目錄中若贮。
二囊扳、”砸殼”前的準(zhǔn)備工作,獲得目標(biāo)app的Bundle路徑和沙盒的Documents路徑
使用ssh連接到設(shè)備兜看,打開設(shè)備中的微信應(yīng)用锥咸。
連接手機(jī):
1.將電腦的端口轉(zhuǎn)發(fā)到iOS設(shè)備中,使用usbmuxd
電腦連接手機(jī)(目錄+執(zhí)行文件+ -t + 端口號) 如./tcprelay.py -t 22:8888
實(shí)例:python /Users/yww/usbmuxd/USBSSH/tcprelay.py -t 22:8888(Mac的8888端口轉(zhuǎn)發(fā)到iOS設(shè)備22端口)
中斷連接:ctrl+c
2.手機(jī)確定連接
(ssh+身份+@iOSIP)通過網(wǎng)絡(luò)方式進(jìn)行细移。
實(shí)例:ssh root@192.168.1.108 (需要同一個(gè)網(wǎng)段)
(ssh +身份+@ilocalhost -p 端口)通過usb方式
實(shí)例:= (端口號是上一步設(shè)置)
ssh mobile@localhost -p 8888
3.查看iOS設(shè)備進(jìn)程
ps -e 查看所有進(jìn)程搏予。(需要視力不錯(cuò))
ps -e |grep /Application/ 查看Application目錄下的活動應(yīng)用
得到Bundle路徑:/var/containers/Bundle/Application/CA5C5142-600E-4E16-B14B-E868506CFD58/WeChat.app/WeChat
進(jìn)入cycript模式查看Documents路徑:
1).cycript -p WeChat
2).NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]cd 2.scp命令來,將動態(tài)庫文件從本地拷貝到iOS設(shè)備弧轧。
實(shí)例:scp /path/localFile root@iOSIP:/remoteFilePath
接著cd到iOS設(shè)備目標(biāo)app的沙盒中的Documents目錄下雪侥,然后輸入:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib +目標(biāo)app的Bundle文件夾路徑,進(jìn)行砸殼精绎。(以mobile身份連接)
四速缨、砸殼成功
在目標(biāo)app沙盒中的Documents目錄下生成后綴為decrypted文件,這是砸殼后的應(yīng)用文件代乃,將其文件拷貝到mac中:
1.通過iFunbox軟件拷貝旬牲。
2.scp命令來仿粹,將動態(tài)庫文件從本地拷貝到iOS設(shè)備。
實(shí)例:scp root@192.168.0.110:/var/mobile/Containers/Data/Application/338B6082-0EF5-44A1-95C6-86AF5AFAA6F5/Documents/WeChat.decrypted /Users/yww/iOSRCode
五原茅、用class-dump工具導(dǎo)出砸殼后的app的頭文件
cd 到砸殼后的app所在目錄
輸入:class-dump -S -s -H WeChat.decrypted -o /Users/yww/iOSRCode/Headers/WeChat
Ps:注意切換終端吭历,指令為su mobile(root)
補(bǔ)充:
Bundle路徑和沙盒路徑:
Bundle完整路徑:/var/containers/Bundle/Application/CA5C5142-600E-4E16-B14B-E868506CFD58/WeChat.apps。
應(yīng)用的完整打包文件夾擂橘,包括資源和運(yùn)行程序
沙盒完整路徑:/var/mobile/Containers/Data/Application/365BB073-D9C1-4AC0-9224-D539FDE94E93晌区。
服務(wù)于應(yīng)用,用于數(shù)據(jù)分離通贞。