unidbg逆向工程:原理與實踐( 簡體 字) | |
作者:陳佳林 | 類別:1. -> 程式設計 -> 綜合 |
出版社:機械工業出版社 | 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 |