3dwoo大學簡體電腦書店
unidbg逆向工程:原理與實踐
( 簡體 字)
作者:陳佳林類別:1. -> 程式設計 -> 綜合
出版社:機械工業出版社unidbg逆向工程:原理與實踐 3dWoo書號: 56357
詢問書籍請說出此書號!
有庫存
NT售價: 645
出版日:12/1/2023
頁數:555
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787111741824 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
前 言
部分 進入unidbg的世界
第1章 unidbg環境準備與快速
上手 2
1.1 r0env環境介紹與集成 2
1.1.1 r0env各組件介紹 2
1.1.2 r0env下載及安裝 5
1.2 IDEA安裝及配置 6
1.3 個unidbg項目 7
1.3.1 unidbg介紹 7
1.3.2 unidbg下載與運行示例 8
1.3.3 unidbg示例講解 9
1.4 本章小結 13
第2章 unidbg模擬執行初探 14
2.1 個NDK項目 14
2.1.1 使用Android Studio創建NDK專案 14
2.1.2 編寫自己的so業務代碼 16
2.2 unidbg的符號調用與位址調用 18
2.2.1 unidbg主動調用前置準備 18
2.2.2 unidbg主動調用so函數 19
2.2.3 unidbg部分API簡單講解 22
2.3 本章小結 24
第3章 unidbg補環境、Hook與
Patch 25
3.1 為so添加交互:使用JNI介面
編寫md5方法 25
3.2 使用unidbg修補執行環境並
模擬執行 27
3.3 脫離編譯器,使用命令列
編譯so 34
3.4 unidbg的Hook 36
3.5 unidbg的Patch 39
3.6 本章小結 42
部分 unidbg原理
第4章 ELF檔執行視圖解析 44
4.1 ELF檔結構 44
4.1.1 ELF頭部結構 45
4.1.2 程式頭部表 47
4.1.3 動態節區_DYNAMIC段 51
4.2 深入jelf代碼細節,探究ELF
解析 54
4.2.1 分析原版jelf代碼 54
4.2.2 分析unidbg版jelf代碼 56
4.3 本章小結 60
第5章 Unicorn的初級使用與初探Linker 61
5.1 Unicorn的初級使用:模擬執行與Hook 61
5.1.1 使用Unicorn進行模擬
執行 61
5.1.2 Unicorn的Hook 64
5.1.3 Keystone與Capstone 70
5.2 初探Android系統源碼 71
5.2.1 Java層代碼追蹤 73
5.2.2 Native層代碼追蹤 75
5.3 本章小結 78
第6章 深入Linker:so的載入、
連結、初始化 79
6.1 so的載入過程 79
6.2 so的連結過程 90
6.3 so的初始化操作 100
6.4 本章小結 102
第7章 使用Unicorn模擬Linker:so的載入過程 103
7.1 模擬Linker?:環境準備 103
7.2 模擬Linker?:so的載入 109
7.3 動態調試Linker,探究so的記憶體
佈局圖 118
7.4 本章小結 122
第8章 使用Unicorn模擬Linker:
so的連結過程 123
8.1 so的依賴庫載入過程 123
8.2 so的動態連結 127
8.3 初嘗unidbg模擬執行
簡單so文件 131
8.4 探究unidbg的Linker代碼
細節 133
8.4.1 unidbg載入so檔代碼
入口 134
8.4.2 處理so資訊並載入記憶體 135
8.4.3 對so的依賴庫進行處理 137
8.4.4 重定位操作 138
8.4.5 處理so的初始化資訊與生成module物件 140
8.4.6 執行初始化 141
8.5 本章小結 142
第9章 R0dbg實戰與Unidbg_FindKey 143
9.1 模擬Linker?:so的初始化過程 143
9.2 指令追蹤與排錯 147
9.2.1 TLS執行緒局部存儲環境
初始化 148
9.2.2 R0dbg對系統調用進行
處理 150
9.3 使用R0dbg模擬執行so 152
9.4 Unidbg_FindKey牛刀小試 154
9.5 本章小結 157
第10章 unidbg源碼解析:AndroidEmulator 158
10.1 創建AndroidEmulator 158
10.2 創建FileSystem 165
10.3 創建Backend 168
10.4 創建SvcMemory 169
10.5 本章小結 172
第11章 unidbg源碼解析:
DalvikVM 173
11.1 分析createDalvikVM() 173
11.2 Dvm相關類介紹 178
11.2.1 BaseVM解析 179
11.2.2 DalvikVM解析 184
11.2.3 DvmObject解析 185
11.2.4 DvmClass解析 187
11.3 本章小結 188
第12章 unidbg源碼解析:模擬
執行流程追蹤 189
12.1 編寫含JNI交互的MD5演算法並
模擬執行 189
12.1.1 編寫含JNI交互的so 189
12.1.2 使用unidbg進行模擬
執行 190
12.2 類比執行流程追蹤:尋找
函數 192
12.3 類比執行流程追蹤:處理參數
並模擬執行 195
12.4 本章小結 202
第13章 unidbg源碼解析:JNI
交互流程追蹤 203
13.1 JNI註冊 203
13.2 JNI指令執行 208
13.3 本章小結 217
第14章 unidbg源碼解析:
Memory 218
14.1 Memory模組的創建 218
14.2 AndroidElfLoader的方法實現 219
14.2.1 記憶體相關方法實現 219
14.2.2 棧空間相關方法實現 226
14.2.3 用戶常用方法解析 227
14.2.4 虛擬模組 230
14.3 載入so的loade能 231
14.4 本章小結 237
第15章 unidbg源碼解析:
Hook 238
15.1 unidbg的Hook框架 238
15.1.1 Hook框架的使用 238
15.1.2 Hook源碼分析 243
15.2 Debugger模組解析 245
15.2.1 Console Debugger的
使用 245
15.2.2 Debugger源碼分析 246
15.3 本章小結 256
第三部分 模擬執行與補環境實戰
第16章 unidbg實戰:I/O重定向 258
16.1 分析App的內部邏輯 258
16.1.1 瞭解App的運行流程 258
16.1.2 Java層邏輯分析 259
16.1.3 so層邏輯分析 262
16.2 unidbg模擬執行分析 267
16.2.1 unidbg模擬執行saveSN()
方法 267
16.2.2 unidbg的I/O重定向 269
16.3 本章小結 272
第17章 unidbg實戰:Debugger
自吐 273
17.1 分析App的內部邏輯 273
17.1.1 瞭解App的運行流程 273
17.1.2 Java層邏輯分析 273
17.1.3 so層邏輯分析 275
17.2 使用unidbg工具進行分析 277
17.2.1 使用unidbg進行模擬
執行 277
17.2.2 使用Debugger模組實現
自吐 281
17.2.3 使用Patch進行自吐 283
17.3 本章小結 286
第18章 unidbg實戰:指針參數與Debugger 287
18.1 指針參數的使用 287
18.1.1 對App進行分析 287
18.1.2 使用unidbg進行模擬
執行 290
18.2 快速識別AES演算法 295
18.2.1 對App進行分析 295
18.2.2 使用unidbg進行模擬
執行 297
18.3 本章小結 301
第19章 unidbg實戰:魔改Base64還原 302
19.1 逆向環境搭建 302
19.2 APK分析 303
19.3 so檔詳細分析 304
19.3.1 基本類型手動修改 304
19.3.2 主體代碼分析 308
19.4 使用unidbg輔助分析so 309
19.4.1 使用unidbg主動調用
Native層的演算法 309
19.4.2 魔改Base64核心步驟
分析 312
19.5 本章小結 321
第20章 unidbg實戰:使用unidbg
動態分析記憶體中的資料 322
20.1 環境搭建 322
20.2 APK基本分析 323
20.2.1 按鈕事件分析 323
20.2.2 對輸入框的內容進行
判斷 325
20.3 使用IDA靜態分析so並使用unidbg動態驗證 326
20.3.1 靜態代碼塊說明 326
20.3.2 IDA分析 326
20.4 本章小結 337
第21章 unidbg實戰:使用unidbg
主動調用fork進程 338
21.1 樣本情景複現 338
21.2 樣本反編譯分析 339
21.3 so中代碼的分析 342
21.4 使用unidbg對fork進程中的
函數做處理 350
21.5 本章小結 356
第22章 unidbg補環境實戰:
補環境入門 357
22.1 為什麼要補環境 357
22.2 unidbg補環境的案例情景
複現 357
22.3 模擬執行so 361
22.3.1 參數獲取 361
22.3.2 unidbg代碼初始化 362
22.3.3 目標函數的調用 363
22.3.4 補環境說明 363
22.3.5 補環境實戰 364
22.4 本章小結 374
第23章 unidbg補環境實戰:標識記錄 375
23.1 樣本一:如何補JNI_OnLoad
環境 375
23.1.1 基本環境搭建 375
23.1.2 運行項目,異常分析 376
23.2 樣本二:檔標識的補環境
策略 384
23.2.1 環境搭建 384
23.2.2 檔標識策略 386
23.3 樣結 395
23.4 本章小結 395
第24章 unidbg補環境實戰:設備風控 396
24.1 Android系統API補全策略 396
24.1.1 ActivityThread 398
24.1.2 android_id 399
24.2 目錄獲取 402
24.3 樣本後一個函數的調用 407
24.4 本章小結 416
第25章 unidbg補環境實戰:
補環境加強 417
25.1 上文回顧 417
25.2 樣本的框架搭建 417
25.3 補環境實sp 420
25.3.1 getApplication環境
補充 420
25.3.2 無障礙服務的補環境 423
25.4 本章小結 437
第26章 unidbg補環境實戰:
結 438
26.1 補環境初始化 438
26.1.1 架構選擇 438
26.1.2 進程名稱初始化 439
26.1.3 處理器後端的設置 439
26.1.4 Android根目錄設置 440
26.1.5 Android虛擬機器創建 440
26.1.6 載入so 440
26.2 補環境適用場景 441
26.2.1 unidbg的報錯 441
26.2.2 何時補環境 444
26.3 補環境的規範 450
26.3.1 通用規則 451
26.3.2 複雜類型的規則 452
26.4 本章小結 457
第四部分 反制與生產環境部署
第27章 Anti-unidbg系列:環境
變數檢測 460
27.1 Linux中的環境變數 460
27.2 Android中的環境變數 462
27.2.1 查看和設置環境變數 462
27.2.2 常見環境變數說明 463
27.3 環境變數源碼解析 465
27.3.1 Java層環境變數讀取和
設置 466
27.3.2 Native層環境變數讀取和
設置 468
27.3.3 情景模擬 469
27.4 unidbg如何設置環境
變數 470
27.5 本章小結 472
第28章 Anti-unidbg系列:xHook檢測 473
28.1 xHook的基本使用 473
28.1.1 項目簡介 473
28.1.2 項目編譯 474
28.1.3 xHook API介紹 476
28.1.4 樣本編寫 478
28.2 xHook的原理闡述 479
28.2.1 檔編譯和測試 479
28.2.2 出現的問題 482
28.2.3 ELF檔案格式 482
28.2.4 Linker 486
28.2.5 重定向追蹤 487
28.2.6 記憶體檢索 489
28.2.7 跳轉驗證 491
28.3 xHook檢測實現 492
28.3.1 獲取ELF檔在記憶體中的
首地址 493
28.3.2 Linker的複寫 495
28.4 unidbg xHook檢測 506
28.5 補充Inline Hook檢測 508
28.5.1 Inline Hook通用檢測
思路 508
28.5.2 Inline Hook模組檢測
思路 515
28.6 本章小結 516
第29章 Anti-unidbg系列:JNI層
常見函數處理 517
29.1 FindClass反制策略 517
29.1.1 FindClass介紹 517
29.1.2 FindClass基本使用 521
29.2 methodID反制策略 524
29.3 本章小結 528
第30章 Anti-unidbg系列:unidbg
常規檢結 529
30.1 檢測說明 529
30.2 基底位址檢測 530
30.3 JNI環境之JNI調用 530
30.4 JNI環境之類檢測 530
30.5 檔描述符 532
30.6 uname 532
30.7 執行時間檢測 534
30.8 檢測Unicorn 534
30.9 本章小結 537
第31章 unidbg生產環境部署 538
31.1 Spring Boot框架的基本使用
方法 538
31.2 Spring Boot和unidbg
結合 542
31.3 unidbg-boot-server簡介 548
31.3.1 簡介 549
31.3.2 常規配置項說明 549
31.4 unidbg-boot-server項目
實例 549
31.4.1 專案演示 549
31.4.2 添加模擬執行 551
31.5 本章小結 555

pagetop