轉(zhuǎn)自?《ios應(yīng)用逆向工程 分析與實戰(zhàn)》
----------------------------------------------------凌亂的分割線------------------------------------------
其次講講要用到的工具(ios安裝工具使用Cydia中搜索安裝,有些需要數(shù)據(jù)源可以自行查找):
已經(jīng)越獄的IOS設(shè)備:這是必須的
OpenSSH(數(shù)據(jù)源:http://apt.saurik.com):用于遠(yuǎn)程登錄ssh和文件傳輸scp
class-dump-z: 用于簡單分析出工程中的類名和函數(shù)名
IDA:強大的反編譯工具
Hopper Disassembler:類似IDA 我比較喜歡非迹,能簡單轉(zhuǎn)換成OC的功能
Reveal:UI層解析工具
iFunBox 捂人、 iTools :兩個都是強大的ios設(shè)備管理工具敦腔,越獄后能輕松讀取應(yīng)用文件等功能
----------------------------------------------------凌亂的分割線------------------------------------------
恩腺晾,差不多就這么多了间螟!上面的工具大部分都是收費的赞警,不過都是有試用版的验辞,接下來我們一個個分析:
ios設(shè)備越獄,這個我就不講了吧唱星,不過我要贊@盤古團(tuán)隊一個雳旅,目前所有ios系統(tǒng)都可以越獄(包括ios8.x)
在ios設(shè)備上下載OpenSSH(數(shù)據(jù)源:http://apt.saurik.com),然后用電腦遠(yuǎn)程登錄ios
ACA80166:~?yuchenghai$?ssh?root@172.168.1.100
然后輸入密碼间聊,@后面是手機的IP號岭辣,越獄后默認(rèn)密碼好像是123456.
傳輸文件的命令是
scp?gdbinit?root@172.168.1.100:/var/root
scp?root@172.168.1.100:/var/root/123.txt?~/
class-dump-z是一個強大的函數(shù)提取工具,非常好用甸饱,也是基礎(chǔ)工具
下載地址:http://stevenygard.com/projects/class-dump
https://code.google.com/p/networkpx/wiki/class_dump_z
可以發(fā)到手機里調(diào)用,也可以在電腦上調(diào)用,要解析的文件是在應(yīng)用目錄下x.app(里面還有用到的所有文件資源)下面的x(x是你要分析的應(yīng)用名)以唱吧為例叹话,用ifunbox找到應(yīng)用進(jìn)入應(yīng)用目錄就可以看到ktv.app了打開包文件就能找到ktv偷遗。
$class-dump-z?ktv?>?ktv.txt//導(dǎo)出所有內(nèi)容到文件
$class-dump-z?-H?ktv?-o?ktvdir///導(dǎo)出所有內(nèi)容目錄到文件夾(首先要創(chuàng)建ktvdir文件夾)
*這里會有一個問題,就是從app store下載的應(yīng)用解析出來會是亂碼驼壶,因為應(yīng)用被加密了氏豌。解決辦法
去渠道上下應(yīng)用如同步推、91
解密工具 如AppCrackr(源http://cydia.xsellize.com)热凹、Crackulous泵喘、Clutch
class-dump 只能解析出類名和函數(shù)名,不能看到具體的實現(xiàn)邏輯般妙。但是很直觀
4.IDA和Hopper Disassembler差不多纪铺,能看到每個函數(shù)的具體邏輯(但是-都是匯編)IDA很強大,能在后面標(biāo)記的oc的函數(shù)名碟渺,但是我更喜歡Hopper Disassembler鲜锚,因為他能簡單的模擬出oc源碼,但是也是非常簡單的苫拍。兩者按空格鍵都能顯示出分支邏輯來芜繁。
匯編非常難看懂,我們需要的是耐心+耐心绒极。后面可以加上動態(tài)工具聯(lián)合分析能更有效
5.Reveal的功能就更強大了骏令,能表明出UI的具體結(jié)構(gòu)來,告訴你每個View的類型是什么垄提,這通常也是我們常用的分析一個app的切入點榔袋。
下載地址:http://revealapp.com
下載完后打開reveal在菜單目錄中help-show reveal library in finder打開庫文件,將兩個文件發(fā)到手機里
scp?-r?/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/Reveal.framework?root@192.168.0.X:/System/Library/Frameworks
scp?/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib?root@192.168.0.X:/Library/MobileSubstrate/DynamicLibraries
接下來編輯libReveal.plist文件
在/Library/MobileSubstrate/DynamicLibraries/下創(chuàng)建文件libReveal.plist塔淤,指定app的Bundle摘昌,可以指定多個{
Filter?=?{
Bundles?=?("com.changba.ktv");
};
}
同學(xué)們會問了,app 的bundleID怎么查看呢高蜂,我們還是用ifunbox工具找到應(yīng)用目錄聪黎,在x.app文件夾中會有info.plist文件,打開就能找到备恤。
最后重啟設(shè)備-打開想分析的應(yīng)用-電腦打開reveal接口稿饰,就可以點擊分析了
總結(jié)一下吧,分析一個應(yīng)用的邏輯是這樣的:
拿個越獄機-下好工具
去越獄平臺下個想分析的應(yīng)用(或者去app store下露泊,用解密工具解密一下)
導(dǎo)入reveal分析頁面喉镰,得到想要的知道的具體視圖類或者大致范圍
分析class-dump中,找到想要的類和函數(shù)
在IDA中找到具體函數(shù)惭笑,查看邏輯
單純的靜態(tài)分析只能知道個大概侣姆,想知道框架和具體內(nèi)容還需要動態(tài)分析(下面分析)的幫助生真。不過想知道一個應(yīng)用用到了什么庫,界面是什么結(jié)構(gòu)捺宗,有什么圖片資源柱蟀,上面的絕對夠用了⊙晾鳎總之逆向工程是比較枯燥無味的東西长已,資料又少,需要的是昼牛。术瓮。。贰健。胞四。加油