iOS 逆向工程看書(shū)筆記day01

第一部分 概念篇

第1章 iOS逆向工程簡(jiǎn)介

軟件逆向工程涯竟,指的是通過(guò)分析一個(gè)程序或系統(tǒng)的功能啸澡、結(jié)構(gòu)或行為飞崖,將它的技術(shù)實(shí)現(xiàn)或細(xì)節(jié)推導(dǎo)出來(lái)的過(guò)程丹弱。

1.1 iOS逆向工程的要求
最好能非常熟悉iOS的硬件構(gòu)成德撬、iOS系統(tǒng)的運(yùn)行原理,還要具備豐富的iOS開(kāi)發(fā)經(jīng)驗(yàn)躲胳。(充分非必要條件)但有兩個(gè)必要條件強(qiáng)烈的好奇心和鍥而不舍的精神蜓洪。

1.2 iOS應(yīng)用逆向工程的作用
基于iOS逆向工程技術(shù),可以在不破壞城墻的前提下坯苹,選擇任意高緯度地點(diǎn)進(jìn)入低緯度城堡隆檀,巧取而不強(qiáng)奪,通過(guò)監(jiān)視甚至改變App的運(yùn)行邏輯,從而達(dá)到獲取核心信息恐仑,了解軟件原理等戰(zhàn)術(shù)目的泉坐。

1.2.1 安全相關(guān)的iOS逆向工程
1.評(píng)定安全等級(jí)
2.逆向惡意軟件
3.檢查軟件后門(mén)
4.取出軟件使用限制

1.2.2開(kāi)發(fā)相關(guān)的iOS逆向工程
1.逆向系統(tǒng)API
2.借鑒別的軟件

1.3 iOS應(yīng)用逆向工程的過(guò)程
一般來(lái)說(shuō),軟件逆向工程可以看做 系統(tǒng)分析 和 代碼分析 兩個(gè)階段的有機(jī)結(jié)合裳仆。

在系統(tǒng)分析階段腕让,應(yīng)在不同的條件下運(yùn)行目標(biāo)程序,在程序中改進(jìn)型各種各樣的操作歧斟,觀察程序的行為特征纯丸,同時(shí)尋找我們感興趣的功能點(diǎn)。還可以瀏覽文件系統(tǒng)静袖,觀察程序顯示的圖片觉鼻、程序的配置文件存放的位置,數(shù)據(jù)庫(kù)文件中存放了哪些信息队橙,有沒(méi)有加密等特征滑凉。

完成了系統(tǒng)分析之后,就該對(duì)App的二進(jìn)制文件進(jìn)行代碼分析了喘帚。通過(guò)逆向工程可以推倒出這個(gè)App的設(shè)計(jì)思路、內(nèi)部算法和實(shí)現(xiàn)細(xì)節(jié)咒钟,但這是一個(gè)非常復(fù)雜的過(guò)程吹由。(難點(diǎn))

1.4 iOS 應(yīng)用逆向工程的工具
四大類(lèi):監(jiān)測(cè)工具、反匯編工具(disassembler)朱嘴、調(diào)試工具(debugger)倾鲫,以及開(kāi)發(fā)工具

1.4.1 監(jiān)測(cè)工具
起到嗅探、監(jiān)測(cè)萍嬉、記錄目標(biāo)程序行為的工具統(tǒng)稱(chēng)為監(jiān)測(cè)工具乌昔,這些工具通常可以記錄并顯示目標(biāo)程序的某些操作壤追,如UI變化磕道、網(wǎng)絡(luò)活動(dòng)、文件訪問(wèn)等行冰。常用工具有Reveal溺蕉、snoop-it、introspy

1.4.2 反匯編工具
IDA 逆向工程中最常用的利器之一
Hopper
把二進(jìn)制文件反匯編之后悼做,就要閱讀成成的匯編代碼了疯特,這是iOS逆向工程中最具挑戰(zhàn),也是最有意思的部分肛走。

1.4.3 調(diào)試工具 Xcode LLDB

1.4.4 開(kāi)發(fā)工具
越獄iOS 基于Xcode iOSOpenDev
偏命令行的 Theos

2.1 iOS 系統(tǒng)結(jié)構(gòu)
Cydia 的 iFile 可以獲取到文件管理

53755EF9-AB52-4CFD-9B09-1840B731475F.png

還可以在AFC2服務(wù)的幫助下漓雅,通過(guò)iFunBox 等PC端軟件訪問(wèn)iOS權(quán)系統(tǒng)文件
因?yàn)橐阈械膶?duì)象來(lái)自于iOS,所有能夠訪問(wèn)iOS全系統(tǒng)文件是開(kāi)展iOS逆向工程的首要前提。

2.1.1 iOS 目錄結(jié)構(gòu)簡(jiǎn)介
Filesystem Hierarchy Standard (FHS) 和 hier(7)為iOS目錄結(jié)構(gòu)的設(shè)計(jì)標(biāo)準(zhǔn)

./: 根目錄

./bin: binary 的簡(jiǎn)寫(xiě)邻吞,存放提供用戶(hù)級(jí)基礎(chǔ)功能的二進(jìn)制文件组题,如ls、ps等

./boot: 存放能使系統(tǒng)成功啟動(dòng)的所有文件吃衅。iOS中此目錄為空往踢。

./dev device 的簡(jiǎn)寫(xiě),存放BSD設(shè)備文件徘层。每個(gè)文件代表系統(tǒng)的一個(gè)塊設(shè)備或字
符設(shè)備峻呕,一般來(lái)說(shuō),塊設(shè)備 以塊為單位傳輸數(shù)據(jù)趣效,如硬盤(pán)瘦癌;而字符設(shè)備 以字符為單位傳輸數(shù)據(jù),如調(diào)制解調(diào)器跷敬。

./sbin: system binaries 的簡(jiǎn)寫(xiě)讯私,存放提供系統(tǒng)級(jí)基礎(chǔ)功能的二進(jìn)制文件,如netstat西傀、reboot等

./etc: Et Cetera 的簡(jiǎn)寫(xiě)斤寇,存放系統(tǒng)腳本及配置文件,如passwd拥褂、hosts等娘锁。在iOS中,/etc是一個(gè)符號(hào)鏈接饺鹃,實(shí)際指向/private/etc.

./lib: 存放系統(tǒng)庫(kù)文件莫秆、內(nèi)核模塊及設(shè)備驅(qū)動(dòng)等。iOS此陌路為空悔详。

./mnt: mount 的簡(jiǎn)寫(xiě)镊屎,存放臨時(shí)的文件系統(tǒng)掛載點(diǎn)。iOS中此目錄為空茄螃。

./private: 存放兩個(gè)目錄缝驳,分別是/private/etc 和 /private/var。

./tmp: 臨時(shí)目錄责蝠。在iOS中党巾, /tmp是一個(gè)符號(hào)鏈接,實(shí)際指向/private/var/tmp

./usr: 包含了大多數(shù)用戶(hù)工具和程序霜医。/usr/bin 包含那些/bin 和 /sbin 中未出現(xiàn)的基礎(chǔ)功能齿拂,如nm、killall等肴敛; /usr/include 包含所有的標(biāo)準(zhǔn)C頭文件署海;/usr/lib存放庫(kù)文件
./var: variable 的簡(jiǎn)寫(xiě),存放一些經(jīng)常更改的文件吗购,比如日志、用戶(hù)數(shù)據(jù)砸狞、臨時(shí)文件等捻勉。其中/var/mobile 和 /var/root 分別存放了 moblie 用戶(hù)和 root 用戶(hù)的文件,是重點(diǎn)關(guān)注的目錄刀森。

作為iOS開(kāi)發(fā)者 不必太過(guò)于關(guān)注系統(tǒng)底層踱启,多關(guān)注些iOS獨(dú)有目錄。

B0D88A3E-4BF0-4389-AD19-CBEB802F4439.png

./ Application: 存放所有的系統(tǒng)App和來(lái)自于Cydia的App研底,不包括StoreApp

./Developer: 如果一臺(tái)設(shè)備來(lái)接X(jué)code后被制定為吊事用機(jī)埠偿,Xcode就會(huì)在ios中生成這個(gè)目錄,其中包含有一些吊事需要的工具和數(shù)據(jù)

A9140E93-A270-43C9-8525-9CAF9B8041E8.png

./Library: 存放一些提供系統(tǒng)支持的數(shù)據(jù)榜晦,其中./Library/MobileSubstrate下存放了所欲基于CydiaSubstrate 的插件

7CC1EA48-A305-46F6-9307-DE30B682E660.png

./System/Library: iOS文件系統(tǒng)中最重要的目錄之一冠蒋,存放大量系統(tǒng)組件,其目錄結(jié)果

對(duì)于該目錄乾胶,在逆向工程的初學(xué)階段抖剿,需要重點(diǎn)關(guān)注的有:
./System/Library/Fremeworks 和 System/Librery/PrivateFrameworks:存放iOS中的各種framework,其中出現(xiàn)在SDK文檔里的只是冰山一角,還有數(shù)不清的未公開(kāi)功能等待我們?nèi)ネ诰颉?/p>

./System/Library/CoreServices里的SpringBoard.app: iOS桌面管理器(類(lèi)似于Windows的explorer),是用戶(hù)與系統(tǒng)交流的最重要中介

./User:用戶(hù)目錄识窿,實(shí)際指向/var/mobile

5752430A-DF64-4340-B95B-4EDEEA0F1A43.png

這個(gè)目錄里存放大量用戶(hù)數(shù)據(jù)
./var/mobile/Media/DCIM 下存放照片
./var/mobile/Media/Recordings下存放錄音文件
./var/mobile/Library/SMS下存放短信數(shù)據(jù)庫(kù)
./var/mobile/Library/Mail/下存放郵件數(shù)據(jù)
另外一個(gè)非常重要的子目錄是/var/mobile/Conteiners,存放StoreApp斩郎。值得注意的是,App的可執(zhí)行文件在bundle與App中的數(shù)據(jù)目錄被分別存放

4B9559E1-03AB-432C-8440-01F268A5E9FD.png

在/var/mobile/Conteiners/Bundle和/var/mobile/Containers/Bundle 和 /var/mobile/Containers/Data這兩個(gè)不同目錄下

2.1.2 iOS文件權(quán)限簡(jiǎn)介

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喻频,一起剝皮案震驚了整個(gè)濱河市孽拷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌半抱,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膜宋,死亡現(xiàn)場(chǎng)離奇詭異窿侈,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)秋茫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)史简,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人肛著,你說(shuō)我怎么就攤上這事圆兵。” “怎么了枢贿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵殉农,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我局荚,道長(zhǎng)超凳,這世上最難降的妖魔是什么愈污? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮轮傍,結(jié)果婚禮上暂雹,老公的妹妹穿的比我還像新娘。我一直安慰自己创夜,他們只是感情好杭跪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著驰吓,像睡著了一般涧尿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棚瘟,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天现斋,我揣著相機(jī)與錄音,去河邊找鬼偎蘸。 笑死庄蹋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的迷雪。 我是一名探鬼主播限书,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼章咧!你這毒婦竟也來(lái)了倦西?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤赁严,失蹤者是張志新(化名)和其女友劉穎扰柠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體疼约,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卤档,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了程剥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劝枣。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖织鲸,靈堂內(nèi)的尸體忽然破棺而出舔腾,到底是詐尸還是另有隱情,我是刑警寧澤搂擦,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布稳诚,位于F島的核電站,受9級(jí)特大地震影響瀑踢,放射性物質(zhì)發(fā)生泄漏采桃。R本人自食惡果不足惜懒熙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望普办。 院中可真熱鬧工扎,春花似錦、人聲如沸衔蹲。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)舆驶。三九已至橱健,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沙廉,已是汗流浹背拘荡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撬陵,地道東北人珊皿。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像巨税,于是被迫代替她去往敵國(guó)和親蟋定。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容