Frida Android SO逆向深入實(shí)踐 版權(quán)信息
- ISBN:9787302645597
- 條形碼:9787302645597 ; 978-7-302-64559-7
- 裝幀:平裝-膠訂
- 冊(cè)數(shù):暫無
- 重量:暫無
- 所屬分類:>>
Frida Android SO逆向深入實(shí)踐 本書特色
《Frida Android SO逆向深入實(shí)踐》是一本針對(duì)使用Frida輔助分析SO進(jìn)行逆向工程項(xiàng)目開發(fā)的實(shí)用指南。本書從基礎(chǔ)開始,詳細(xì)介紹了NDK編譯套件的使用以及如何開發(fā)包含SO的應(yīng)用軟件并進(jìn)行分析調(diào)試。接著,書中介紹了將算法移植到SO中保護(hù)App的方法,并展示了如何使用模擬執(zhí)行框架加載SO運(yùn)行算法,同時(shí)結(jié)合GDB、HyperPwn、Objection和Frida進(jìn)行聯(lián)合調(diào)試SO中的算法。 此外,本書還深入探討了ARM/ELF的文件格式和反編譯工具IDA,詳細(xì)介紹了Frida/Jnitrace Hook/Invoke JNI,以及JNI與反射及簡單風(fēng)控案例設(shè)計(jì)分析。對(duì)于onCreate的Native化也進(jìn)行了解析,幫助讀者更好地理解Android源碼追蹤JNI的綁定流程。 *后,本書還全面介紹了哈希和對(duì)稱加解密算法的核心原理與實(shí)現(xiàn)細(xì)節(jié),并展示了使用Frida輔助逆向分析的工作流程。通過由易到難、由淺入深的講解方式,本書適合Native層的初、中級(jí)讀者閱讀。無論您是對(duì)逆向工程感興趣的初學(xué)者,還是有一定經(jīng)驗(yàn)的開發(fā)者,本書都將為您帶來全新的視角和實(shí)用的技巧,助力您在逆向工程領(lǐng)域取得更大的突破。
Frida Android SO逆向深入實(shí)踐 內(nèi)容簡介
《Frida Android SO逆向深入實(shí)踐》主要介紹使用Frida輔助分析SO進(jìn)行逆向工程項(xiàng)目開發(fā)。首先從基礎(chǔ)開始介紹NDK編譯套件,開發(fā)編譯包含SO的應(yīng)用軟件并進(jìn)行動(dòng)靜態(tài)分析調(diào)試;接著介紹如何將算法移植到SO中保護(hù)App,并使用模擬執(zhí)行框架加載SO運(yùn)行算法,使用GDB、HyperPwn、Objection、Frida聯(lián)合調(diào)試SO中的算法;此外,還將介紹ARM/ELF的文件格式和反編譯工具IDA,F(xiàn)rida/Jnitrace Hook/Invoke JNI,JNI與反射及簡單風(fēng)控案例設(shè)計(jì)分析,onCreate的Native化,分析Android源碼追蹤JNI的綁定流程。*后介紹哈希和對(duì)稱加解密算法的核心原理與實(shí)現(xiàn)細(xì)節(jié),以及使用Frida輔助逆向分析的工作流程。 《Frida Android SO逆向深入實(shí)踐》按照由易到難、由淺入深的方式進(jìn)行講解,適合Native層的初、中級(jí)讀者閱讀。
Frida Android SO逆向深入實(shí)踐 目錄
1.1 虛擬機(jī)環(huán)境搭建 1
1.2 逆向環(huán)境搭建 3
1.2.1 Android Studio安裝NDK編譯套件 3
1.2.2 ADB的配置和使用 5
1.2.3 Python版本管理 6
1.2.4 移動(dòng)設(shè)備環(huán)境準(zhǔn)備 7
1.2.5 Frida版本管理 7
1.2.6 Objection的安裝和使用 8
1.3 Frida基本源碼開發(fā)環(huán)境搭建 10
1.4 初識(shí)NDK 12
1.5 其他工具 16
1.6 本章小結(jié) 18
第2章 Android SO動(dòng)態(tài)調(diào)試入門 19
2.1 Android SO基本動(dòng)態(tài)分析調(diào)試 19
2.1.1 **個(gè)NDK程序 19
2.1.2 動(dòng)態(tài)調(diào)試NDK程序 20
2.1.3 交叉編譯 24
2.2 LLDB動(dòng)態(tài)調(diào)試(三方)Android SO 27
2.3 Capstone/Keystone/Unicorn(反)匯編器 30
2.4 Frida動(dòng)態(tài)調(diào)試Android Native部分 32
2.5 Frida Instruction模塊動(dòng)態(tài)反匯編 32
2.6 本章小結(jié) 34
第3章 靜態(tài)分析工具的安裝和基本使用 35
3.1 使用objdump反匯編目標(biāo)文件命令顯示二進(jìn)制文件信息 35
3.2 使用010 Editor解析SO文件顯示二進(jìn)制基本信息 38
3.3 Ghidra/JEB/IDA高級(jí)反匯編器 40
3.4 Binary Ninja新晉反匯編器 47
3.5 本章小結(jié) 51
第4章 C算法開發(fā)及模擬執(zhí)行 52
4.1 Native層密碼學(xué)套件移植開發(fā) 52
4.2 Frida Hook/主動(dòng)調(diào)用執(zhí)行算法 62
4.3 使用AndroidNativeEmu模擬執(zhí)行算法 63
4.4 本章小結(jié) 64
第5章 動(dòng)態(tài)調(diào)試:GDB動(dòng)態(tài)調(diào)試、Hyperpwn/(內(nèi)存)斷點(diǎn)/棧幀 65
5.1 GDB C/S的調(diào)試架構(gòu) 65
5.2 將App編譯成帶調(diào)試符號(hào)的SO文件 67
5.3 使用Android調(diào)試模式來啟動(dòng)App 69
5.4 Hyperpwn調(diào)試入門 73
5.5 Objection Frida Hyperpwn聯(lián)合調(diào)試 79
5.6 本章小結(jié) 82
第6章 匯編開發(fā):ARM匯編原理/流程/調(diào)用約定/動(dòng)態(tài)調(diào)試 83
6.1 Android和ARM處理器 83
6.2 ARM原生程序的生成過程 84
6.3 匯編語言簡介 87
6.3.1 匯編程序組成 87
6.3.2 ARM處理器的工作模式與尋址方式 91
6.4 ARM匯編指令及動(dòng)態(tài)調(diào)試分析 94
6.5 多功能CPU模擬器:Unicorn 109
6.6 本章小結(jié) 110
第7章 逆向分析:ELF文件結(jié)構(gòu)、節(jié)/區(qū)/表/段/符號(hào)/鏈接器 111
7.1 操作系統(tǒng)ELF文件動(dòng)態(tài)加載的基礎(chǔ)知識(shí) 111
7.1.1 從幾個(gè)問題入手 111
7.1.2 操作系統(tǒng)的核心概念 112
7.2 可執(zhí)行文件的加載過程 114
7.3 使用Unidbg模擬執(zhí)行SO文件中的函數(shù) 116
7.3.1 Unidbg框架的基本運(yùn)作原理 117
7.3.2 Unidbg各組件的基本功能 119
7.3.3 追蹤SO文件的加載與解析流程 123
7.4 本章小結(jié) 126
第8章 反編譯工具IDA 127
8.1 IDA入門 127
8.1.1 IDA的安裝與使用 127
8.1.2 IDA插件的使用 129
8.1.3 IDA反匯編介紹 130
8.1.4 IDA分析與Frida Hook結(jié)合 136
8.2 動(dòng)靜態(tài)SO算法還原與脫機(jī) 137
8.2.1 IDA動(dòng)態(tài)調(diào)試SO算法 137
8.2.2 Keypatch原理/實(shí)戰(zhàn)硬改算法邏輯 149
8.3 本章小結(jié) 150
第9章 JNI接口初識(shí) 151
9.1 JNI及其工作原理 151
9.1.1 NDK簡介 151
9.1.2 JNI——NDK具體的實(shí)現(xiàn)接口 153
9.2 Frida手動(dòng)追蹤JNI接口 163
9.3 jnitrace自動(dòng)追蹤JNI 167
9.4 JNI接口大橫評(píng) 168
9.4.1 Frida Hook并主動(dòng)調(diào)用 169
9.4.2 jnitrace 179
9.4.3 ExAndroidNativeEmu 179
9.5 本章小結(jié) 183
第10章 JNI的特性:Java/Native互相調(diào)用、反射/全局/局部引用 184
10.1 反射“濫用”類和對(duì)象的基本屬性 184
10.1.1 反射的概念與相關(guān)的Java類 184
10.1.2 實(shí)例:Xposed刷機(jī)和編譯使用的插件 186
10.1.3 反射設(shè)置/調(diào)用類和對(duì)象的域和方法 190
10.1.4 來自Native層的反射調(diào)用追蹤 192
10.2 設(shè)計(jì)簡單風(fēng)控SDK并主動(dòng)調(diào)用觀察效果 194
10.2.1 收集設(shè)備關(guān)鍵信息的常見方向和思路 194
10.2.2 Native層使用反射調(diào)用Java層API獲取設(shè)備信息 195
10.3 本章小結(jié) 208
第11章 onCreate進(jìn)行Native化和引用 209
11.1 將onCreate函數(shù)Native化 209
11.2 Java內(nèi)存管理 220
11.2.1 C和Java內(nèi)存管理的差異 220
11.2.2 JNI的三種引用 220
11.3 本章小結(jié) 221
第12章 JNI動(dòng)靜態(tài)綁定和追蹤 222
12.1 Dalvik下動(dòng)靜態(tài)注冊(cè)流程追蹤 222
12.2 ART下動(dòng)靜態(tài)注冊(cè)流程追蹤 228
12.3 本章小結(jié) 237
第13章 MD5算法分析和魔改 238
13.1 MD5算法的描述 240
13.2 MD5工程實(shí)現(xiàn) 246
13.3 哈希算法逆向分析 248
13.3.1 Findcrypt/Signsrch源碼剖析 248
13.3.2 算法識(shí)別插件的核心原理與改進(jìn)方向 254
13.3.3 使用findhash插件檢測(cè)哈希算法 255
13.3.4 SHA1算法逆向分析實(shí)戰(zhàn) 258
13.4 哈希算法的擴(kuò)展延伸 264
13.4.1 哈希算法的特征 264
13.4 2 大廠*愛:HMAC-MD5/SHA1詳解 266
13.5 Frida MemoryAccessMonitor的使用場景 270
13.6 本章小結(jié) 277
第14章 對(duì)稱加密算法逆向分析 278
14.1 DES詳解 278
14.1.1 分組密碼的填充與工作模式 286
14.1.2 三重DES 287
14.2 AES 289
14.2.1 AES初識(shí) 289
14.2.2 深入了解AES 296
14.2.3 Unicorn輔助分析 302
14.2.4 AES的工作模式 305
14.3 本章小結(jié) 312
第15章 讀懂DEX并了解DexDump解析過程 313
15.1 環(huán)境及開發(fā)工具 313
15.2 認(rèn)識(shí)DEX文件結(jié)構(gòu) 314
15.2.1 DEX文件格式概貌 314
15.2.2 DEX文件格式項(xiàng)目搭建 315
15.2.3 DEX文件詳細(xì)分析 316
15.3 DexDump解析 330
15.3.1 ULEB128格式講解 330
15.3.2 DexDump解析過程 333
15.4 本章小結(jié) 338
第16章 ELF文件格式解讀及其生成過程 339
16.1 ELF文件頭 339
16.1.1 分析環(huán)境搭建 340
16.1.2 elf_header 341
16.1.3 program_header_table 344
16.1.4 section_header_table 344
16.2 ELF可執(zhí)行文件的生成過程與執(zhí)行視圖 352
16.2.1 ARM可執(zhí)行文件的生成過程 352
16.2.2 執(zhí)行視圖 357
16.2.3 GOT和PLT 359
16.3 本章小結(jié) 365
第17章 高版本Android函數(shù)地址索引徹底解決方案 366
17.1 不同版本對(duì)于動(dòng)態(tài)鏈接庫的調(diào)用對(duì)比 366
17.2 高版本加載SO文件 367
17.2.1 自定義庫查看庫函數(shù)的偏移 367
17.2.2 自定義庫實(shí)現(xiàn)的背景 368
17.2.3 自定義庫findsym的實(shí)現(xiàn) 370
17.3 SO符號(hào)地址尋找 372
17.3.1 通過節(jié)頭獲取符號(hào)地址 372
17.3.2 模仿Android通過哈希尋找符號(hào) 374
17.4 本章小結(jié) 377
第18章 從findExportByName源碼分析到anti-frida新思路 378
18.1 兩種模式下anti-frida的演示 378
18.1.1 Frida attach模式下的anti-frida 378
18.1.2 Frida spawn模式下的anti-frida 380
18.2 源碼分析 383
18.2.1 Frida編譯 384
18.2.2 源碼追蹤分析 385
18.3 本章小結(jié) 388
第19章 PLT和GOT的Hook 389
19.1 GOT的Hook 389
19.1.1 根據(jù)節(jié)頭實(shí)現(xiàn)Hook 392
19.1.2 根據(jù)程序頭來實(shí)現(xiàn)Hook 395
19.2 PLT的Hook 397
19.2.1 根據(jù)節(jié)頭來實(shí)現(xiàn)Hook 397
19.2.2 根據(jù)程序頭來實(shí)現(xiàn)Hook 403
19.3 從GOT和PLT的Hook到xHook原理剖析 406
19.3.1 xHook的優(yōu)點(diǎn) 406
19.3.2 源碼賞析 406
19.4 本章小結(jié) 407 第20章 番外篇——另類方法尋找SO文件首地址 408
20.1 項(xiàng)目搭建 408
20.2 封裝成庫 413
20.3 通過soinfo的映射表遍歷符號(hào) 415
20.4 dlopen和dlsym獲取符號(hào)地址 417
20.5 本章小結(jié) 418
第21章 Java Hook的原理 419
21.1 Java函數(shù)源碼追蹤 419
21.1.1 什么是Java Hook 419
21.1.2 源碼追蹤 420
21.2 Java Hook實(shí)踐 424
21.3 Frida中Java Hook的實(shí)現(xiàn) 429
21.3.1 Frida perform源碼追蹤 429
21.3.2 Frida implementation源碼追蹤 435
21.4 本章小結(jié) 437
第22章 inline Hook中用到的匯編指令 438
22.1 兩種Hook方式的介紹 438
22.2 定向跳轉(zhuǎn) 441
22.3 寄存器保存 445
22.3.1 寄存器選擇 445
22.3.2 3種寄存器賦值的方案 446
22.4 本章小結(jié) 449
第23章 基于Capstone處理特殊指令 450
23.1 編譯Capstone并配置測(cè)試環(huán)境 450
23.2 Capstone官方測(cè)試案例演示 453
23.3 自定義匯編翻譯函數(shù) 456
23.4 基于Capstone修正指令 459
23.4.1 指令修復(fù)的目的 459
23.4.2 修復(fù)指令的原理 460
23.4.3 指令修復(fù)的種類 460
23.5 本章小結(jié) 461
第24章 inline Hook框架集成 462
24.1 inline Hook框架測(cè)試 462
24.2 結(jié)合Capstone框架 467
24.3 本章小結(jié) 469
第25章 通殺的檢測(cè)型框架r0Invoke 470
25.1 r0Invoke牛刀小試脫殼fulao2 471
25.1.1 APK靜態(tài)分析 471
25.1.2 使用r0Invoke脫殼 471
25.1.3 脫殼操作 472
25.2 r0Invoke進(jìn)階:跟蹤所有運(yùn)行在ART下的Java函數(shù) 477
25.3 r0Invoke主動(dòng)調(diào)用Native函數(shù)并且修改參數(shù) 479
25.4 r0Invoke Trace高度混淆OLLVM 482
25.5 本章小結(jié) 484
第26章 SO文件加載流程分析與注入實(shí)戰(zhàn) 485
26.1 SO文件的加載方式 485
26.2 SO文件加載流程 487
26.3 Frida Hook dlopen和android_dlopen_ext 491
26.4 編譯AOSP注入SO 496
26.4.1 直接加載sdcard中的SO文件 497
26.4.2 加載私有目錄的SO文件 498
26.4.3 編譯AOSP注入SO文件 500
26.5 注入優(yōu)化 502
26.6 本章小結(jié) 504
Frida Android SO逆向深入實(shí)踐 作者簡介
陳佳林,在軟件安全領(lǐng)域從業(yè)近十年,F(xiàn)rida中文布道師,R0Capture等多款工具開發(fā)者,尤其在移動(dòng)安全領(lǐng)域擁有經(jīng)驗(yàn)豐富,多次主持銀行、電信、政府及行業(yè)部門培訓(xùn)并參與安全研究項(xiàng)目。曾在國內(nèi)知名安全開發(fā)者峰會(huì)、GeekPwn發(fā)表主題演講。在看雪網(wǎng)站、安全客、Freebuf發(fā)表大量技術(shù)文章,曾就職于看雪科技,負(fù)責(zé)移動(dòng)應(yīng)用安全研究,《安卓高級(jí)研修班》負(fù)責(zé)人,出版著作《安卓Frida逆向與抓包實(shí)戰(zhàn)》、《安卓Frida逆向與協(xié)議分析》等。
- >
姑媽的寶刀
- >
新文學(xué)天穹兩巨星--魯迅與胡適/紅燭學(xué)術(shù)叢書(紅燭學(xué)術(shù)叢書)
- >
上帝之肋:男人的真實(shí)旅程
- >
推拿
- >
我從未如此眷戀人間
- >
隨園食單
- >
巴金-再思錄
- >
小考拉的故事-套裝共3冊(cè)