
《iOS應(yīng)用逆向與安全之道》是一本深入探討iOS應(yīng)用逆向工程和安全方面的重要著作。本書分為四個主要部分,每個部分都包含多個章節(jié),共涵蓋了廣泛的主題。
第一篇 "初 出 茅 廬" 主要介紹了iOS逆向工程的背景知識和環(huán)境搭建,為讀者提供了入門知識和必要工具的使用方法。
第二篇 "小 試 牛 刀" 則著重介紹了應(yīng)用脫殼、運行時分析和各種工具的使用,幫助讀者更深入地了解應(yīng)用的運行時行為。
第三篇 "裴 堂 幾 室" 引導讀者進行靜態(tài)分析和動態(tài)調(diào)試,使用工具如Hopper和IDA Pro來深入研究應(yīng)用的內(nèi)部結(jié)構(gòu)和執(zhí)行流程。
第四篇 "融 會 貫 通" 將讀者帶入實戰(zhàn)領(lǐng)域,通過案例分析具體應(yīng)用程序,包括社交應(yīng)用、短視頻應(yīng)用、游戲應(yīng)用、物聯(lián)網(wǎng)設(shè)備應(yīng)用等,從中學習如何進行逆向工程和應(yīng)用安全評估。
總之,這本書提供了廣泛的知識和工具,幫助讀者深入理解iOS應(yīng)用逆向工程和安全方面的知識,以便更好地理解和保護自己的應(yīng)用程序。
第一篇 初 出 茅 廬
第1章 背景知識………………………2
1.1 iOS逆向工程簡介………………2
1.1.1 iOS逆向工程學習路線…………2
1.1.2 iOS逆向工程基本流程…………3
1.1.3 iOS 逆向工程意義所在…………4
1.2 iOS越獄平臺簡介………………4
1.2.1 iOS越獄及其定義………………4
1.2.2 iOS 越獄商店………………………5
1.2.3 iOS系統(tǒng)目錄………………………6
1.2.4 iOS 沙盒結(jié)構(gòu)………………………8
1.2.5 iOS 應(yīng)用結(jié)構(gòu)………………………9
1.2.6 iOS 文件權(quán)限………………………10
1.3 本章小結(jié)………………………11
第2章 環(huán)境搭建……………………12
2.1 開發(fā)環(huán)境………………………12
2.1.1 Xcode…………………………………12
2.3 SSH配置………………………20
2.3.1 安裝 OpenSSH……………………21
2.3.2 配置 dropbear……………………21
2.3.3 免密碼登錄………………………22
2.3.4 USB連接設(shè)備……………………23
2.3.5 修改默認密碼………………………24
2.3.6 使用 scp傳輸文件………………25
2.4 實用工具推薦……………………25
2.5 本章小結(jié)…………………………26
第3章 逆向基礎(chǔ)………………………27
3.1Mach-O 文件格式………………27
3.1.1 通用二進制文件…………………27
3.1.2 Mach-O頭部……………………30
3.1.3 加載命令…………………………33
3.2 ARM匯編基礎(chǔ)…………………46
3.2.1 寄存器……………………………46
2.1.2 Homebrew……………………………17
3.2.2 指令集……………………………48
2.2 越獄環(huán)境 ………………………18
2.2.1 iOS 越獄設(shè)備的選擇……………18
3.2.3 棧及傳參規(guī)則………………………52
3.2.4 內(nèi)聯(lián)匯編……………………………56
2.2.2 Cydia Substrate(iOS 11 以下)…19
2.2.3 Substitute(iOS 11~iOS 13)…19
2.2.4 必備小工具………………………20
3.2.5 Objective-C的匯編機制………59
3.3 本章小結(jié)………………………62
第二篇 小 試 牛 刀
第4章 應(yīng)用脫殼……………………64
4.1 檢測是否加殼…………………64
衛(wèi)錄
4.2 Clutch…………………………………65
4.2.1 安裝 Clutch………………………65
4.2.2 Clutch 脫殼實戰(zhàn)…………………65
4.3 dumpdecrypted………………………66
4.3.1 編譯 dumpdecrypted……………66
4.3.2 dumpdeerypted 脫殼實戰(zhàn)………67
4.4 bfinject………………………………68
4.4.1 安裝 bfinject……………………69
4.4.2 bfinject 脫殼實戰(zhàn)……………69
4.4.3 修復閃退……………………………71
4.5 CrackerXI(iOS 11~iOS 13)…71
4.6 Frida-ios-dump………………………72
4.6.1 一鍵快速脫殼………………………72
4.6.2 完美修復閃退……………………74
4.6.3 ipa文件安裝失敗處理…………75
4.7 使用lipo分離架構(gòu)……………76
4.8 本章小結(jié) …………………………77
第5章 運行時分析…………………78
5.1 class-dump………………………78
5.2 Cycript………………………………80
5.2.1 越獄環(huán)境安裝 Cycript…………80
5.2.2 Cycript 實戰(zhàn)……………………80
5.2.3 Cycript 高級用法………………85
5.2.4 iOS 11使用 Cycript……………88
5.3 Reveal …………………………………88
5.3.1 越獄環(huán)境使用 Reveal…………89
5.3.2 iOS 11~iOS 13 使用 Reveal…89
5.3.3 Reveal 實戰(zhàn)………………………90
5.4 FLEX…………………………………91
5.4.1 越獄環(huán)境使用 FLEX……………92
5.4.2 FLEX 實戰(zhàn)…………………………93
5.5 Frida…………………………………95
5.5.1 Frida安裝…………………………95
5.5.2 Frida入門…………………………96
5.5.3 Frida實戰(zhàn)………………………102
5.5.4 Frida進階………………………105
5.6 本章小結(jié)………………………116
第三篇 裴 堂 幾 室
第6章 靜態(tài)分析……………………118
6.1 Hopper……………………………118
6.1.1 安裝 Hopper ……………………118
6.1.2 認識 Hopper……………………119
6.1.3 編寫 Hopper 腳本實戰(zhàn)………125
6.2 IDA Pro………………………………129
6.2.1 加載文件………………………129
6.2.2 功能劃分………………………131
6.2.3 保存 idb 文件……………………134
6.2.4 常用功能及快捷鍵 ……………135
6.2.5 編寫IDA 腳本實戰(zhàn)……………138
6.3 如何定位切入點……………142
6.3.1 通過Runtime 定位………………142
6.3.2 通過導入函數(shù)定位 ……………143
6.3.3 通過導出函數(shù)定位……………143
6.3.4 通過字符串定位………………143
6.3.5 通過網(wǎng)絡(luò)行為定位……………143
6.4 實例分析………………………144
6.4.1 使用 class-dump 定位按鈕
事件……………………………144
6.4.2 使用 Hopper分析驗證流程…145
6.4.3 使用IDA分析序列號及修改
代碼 ……………………………148
6.5 本章小結(jié)………………………154
第7章 動態(tài)調(diào)試……………………155
7.1 LLDB 動態(tài)調(diào)試………………155
7.1.1 配置 debugserver………………155
7.1.2 與 LLDB 建立連接……………157
7.1.3 LLDB 命令詳解…………………159
7.1.4 LLDB手動脫殼…………………171
7.1.5 LLDB 腳本編寫…………………173
7.1.6 LLDB高效技巧…………………177
iOS應(yīng)用逆向與安全之道
7.2 IDA動態(tài)調(diào)試…………………179
7.2.1 直接啟動調(diào)試……………………179
7.2.2 遠程附加調(diào)試…………………182
7.3 Xcode 動態(tài)調(diào)試………………185
7.3.1 遠程附加調(diào)試……………………185
7.3.2 直接啟動調(diào)試……………………187
7.3.3 恢復符號表……………………190
7.3.4 UI調(diào)試功能………………………193
7.4 本章小結(jié) ………………………195
第8章 越獄開發(fā)……………………196
8.1 Theos 簡介…………………196
8.1.1 Theos 安裝……………………196
8.1.2 Theos 常用模塊…………………197
8.2 插件開發(fā)………………………198
8.2.1 創(chuàng)建工程………………………198
8.2.2 解讀工程文件……………………199
8.2.3 編譯+打包+安裝 ………………204
8.3 命令行工具開發(fā)………………208
8.3.1 創(chuàng)建工程…………………………209
8.3.2 兼容iOS 11~iOS 13…………210
8.4 系統(tǒng)級應(yīng)用開發(fā)………………211
8.4.1 創(chuàng)建工程…………………………211
8.4.2 以root權(quán)限運行(iOS 11
以下)……………………………213
8.4.3 以 root權(quán)限運行(iOS 11、
iOS 12)……………………………215
8.4.4 以root權(quán)限運行(iOS 13)…216
8.5 守護進程開發(fā)…………………216
8.5.1 創(chuàng)建工程………………………216
8.5.2 自動部署…………………………219
8.6 進程間通信……………………220
8.6.1 Notification 通信 ………………220
8.6.2 XPC通信………………………222
8.6.3 RocketBootstrap 通信…………224
8.7 MonkeyDev………………………228
8.7.1 MonkeyDev安裝………………228
8.7.2 Logos Tweak …………………229
8.7.3 CaptainHook Tweak……………231
8.7.4 Command-line Tool……………233
8.8 跟蹤函數(shù)調(diào)用…………………234
8.8.1 使用logify 跟蹤………………234
8.8.2 使用 ANYMethodLog跟蹤……234
8.8.3 使用 BigBang跟蹤……………236
8.9 增加系統(tǒng)設(shè)置項……………236
8.9.1 PreferenceLoader………………237
8.9.2 AppList…………………………240
8.10 deb 重打包……………………244
8.11 本章小結(jié)……………………246
第9章 Hook 與注入…………………247
9.1 Method Swizzling………………247
9.1.1 Method Swizzling 原理………247
9.1.2 Method Swizzling實例…………248
9.1.3 MSHookMessageEx 實例………249
9.1.4 獲取類成員變量實例…………250
9.2 Inline Hook…………………………251
9.2.1 MSHookFunction 實例………252
9.2.2 fishhook 實例…………………252
9.2.3 HookZz實例……………………253
9.3 Swift Hook………………………254
9.3.1 Swift逆向分析…………………254
9.3.2 Swift Hook 實例…………………256
9.4 注入技術(shù)………………………257
9.4.1 越獄環(huán)境注入…………………257
9.4.2 非越獄環(huán)境注入………………258
9.4.3 注入 dylib 實例…………………259
9.5 應(yīng)用重簽名……………………261
9.5.1 手動重簽名………………………261
9.5.2 使用iOSAppSigner重簽名…264
9.5.3 使用 fastlane 重簽名…………265
9.5.4 使用MonkeyDev 重簽名……266
9.6 本章小結(jié)………………………266
第10章 應(yīng)用安全……………………267
10.1 調(diào)試器對抗…………………267
10.1.1 反調(diào)試…………………………267
10.1.2 反-反調(diào)試………………………270
10.2 注入對抗……………………271
10.2.1 反注入…………………………271
10.2.2 注入檢測………………………272
10.2.3 注入防護…………………………275
10.3 Hook 檢測……………………278
10.3.1 Method Swizzing檢測………278
10.3.2 Inline Hook 檢測……………278
10.4 越獄檢測……………………281
10.4.1 檢測越獄商店及其附屬文件…281
10.4.2 嘗試讀取系統(tǒng)應(yīng)用列表………282
10.4.3 檢測 URLSchemes 是否有效…282
10.5 完整性檢測…………………283
10.5.1 加載命令檢測 …………………283
10.5.2 代碼段檢測……………………284
10.5.3 簽名信息檢測 …………………285
10.6 代碼保護……………………286
10.7 本章小結(jié)………………………288
第11章 協(xié)議安全…………………289
11.1 HTTP分析利器:Charles…289
11.1.1 配置 Charles…………………289
11.1.2 修改數(shù)據(jù)包……………………291
11.1.3 重放數(shù)據(jù)包……………………293
11.1.4 模擬弱網(wǎng)絡(luò)……………………294
11.1.5 HTTPS抓包…………………295
11.1.6 繞過證書校驗……………………297
11.2 TCP/IP分析利器:
Wireshark…………………………298
11.2.1 創(chuàng)建遠程虛擬接口…………298
11.2.2 認識Wireshark…………………300
11.2.3 TCP抓包分析示例……………300
11.2.4 數(shù)據(jù)包過濾………………………303
11.3 常見算法識別………………306
11.3.1 壓縮算法………………………307
11.3.2 摘要算法………………………310
11.3.3 對稱加密算法……………………313
11.3.4 非對稱加密算法………………317
11.3.5 利用插件識別……………………323
11.4 本章小結(jié)………………………325
第四篇 融 會 貫 通
第 12章 實戰(zhàn) 1:某著名社交 App
小程序格式分析……………327
12.1目標 App介紹………………327
12.2 尋找切入點…………………327
12.3 分析文件結(jié)構(gòu)………………329
12.3.1 分析偽代碼……………………329
12.3.2 定義文件結(jié)構(gòu)…………………330
12.4 分析包頭結(jié)構(gòu)………………331
12.4.1 推導包頭大小…………………332
12.4.2 定義包頭結(jié)構(gòu) ………………335
12.5 分析描述信息結(jié)構(gòu)…………336
12.6 編寫解包工具………………339
12.7 本章小結(jié)……………………340
第13章 實戰(zhàn) 2:某短視頻 App 水印
控制及配置開關(guān)分析……341
13.1 目標 App介紹………………341
13.2 尋找切入點…………………341
13.2.1 抓包分析……………………341
13.2.2 用FLEXible 獲取 Controller…344
13.2.3 用Frida定位按鈕響應(yīng)方法…344
13.3 水印控制邏輯分析…………345
13.4 配置開關(guān)分析 ………………350
13.4.1 獲取“通用設(shè)置”頁面的
Controller…………………………350
13.4.2 尋找數(shù)據(jù)源……………………351
13.4.3 尋找數(shù)據(jù)模型…………………353
jOS應(yīng)用逆向與安全之道
13.4.4 分析數(shù)據(jù)模型………………354
13.5 本章小結(jié)……………………357
第14章 實戰(zhàn) 3:某游戲廣告及
內(nèi)購流程分析……………358
14.1目標 App介紹………………358
14.2 分析廣告邏輯………………359
14.2.1 使用 Reveal 定位廣告窗口…359
14.2.2 定位 GADBannerView 類的
初始化方法…………………360
14.2.3 定位 GADBannerView 類加載
廣告的方法……………………361
14.2.4 定位GADBannerView 對象的
創(chuàng)建方法 ………………………362
14.3 分析內(nèi)購流程………………366
14.3.1 定位關(guān)鍵類……………………366
01C14.3.2 追蹤 CMPPurchaseManager
類………………………367
14.3.3 追蹤 Purchase類……………369
14.3.4 分析回調(diào)處理邏輯……………371
14.3.5 分析內(nèi)購結(jié)果構(gòu)造過程………372
14.4 本章小結(jié)……………………373
第15章 實戰(zhàn) 4:某物聯(lián)網(wǎng)設(shè)備登錄
協(xié)議及安全隱患分析……374
15.1 目標App介紹………………374
15.2 登錄協(xié)議分析………………374
15.2.1 確定可變字段…………………374
15.2.2 定位關(guān)鍵點………………………375
15.2.3 分析參數(shù)來源…………………376
15.2.4 分析 verify 算法………………379
15.2.5 分析 salt 值……………………381
15.3 安全隱患分析………………383
15.3.1 安全隱患成因…………………383
15.3.2 安全隱患復現(xiàn) …………………384
15.4 本章小結(jié)……………………385
第16章 實戰(zhàn) 5:某樂譜 App下載
協(xié)議與安全問題分析……386
16.1 目標 App介紹…………………386
16.2 數(shù)據(jù)包采樣…………………386
16.2.1 確定可變字段…………………386
16.2.2 字段依賴分析…………………387
16.3 簽名算法分析………………388
16.3.1 靜態(tài)定位關(guān)鍵函數(shù)……………388
16.3.2 動態(tài)調(diào)試獲取主要參數(shù)………390
16.3.3 棧回溯找出其他參數(shù)…………392
16.3.4 協(xié)議下載樂譜…………………393
16.4 VIP權(quán)限校驗的安全問題…394
16.4.1 安全問題成因…………………395
16.4.2 分析 VIP權(quán)限控制邏輯………397
16.5 樂譜解密過程分析……………398
16.6 本章小結(jié)……………………403
第17章 實戰(zhàn) 6:某經(jīng)典 GPS 插件
授權(quán)機制分析……………404
17.1目標 App介紹…………………404
17.2 抓包分析……………………405
17.2.1 數(shù)據(jù)包采樣………………………405
17.2.2 判斷關(guān)鍵字段……………………406
17.3 定位關(guān)鍵函數(shù)…………………408
17.4 授權(quán)機制分析………………411
17.4.1 去除反調(diào)試……………………411
17.4.2 確定算法…………………………413
17.4.3 分析RSA公鑰讀取邏輯……416
17.4.4 驗證算法…………………………420
17.4.5 主程序驗證流程………………420
17.4.6 二次驗證流程…………………421
17.5 本章小結(jié)……………………423
下一篇:《書和回憶》黃永玉 全文