UNIDBG 逆向工程:原理與實務

陳佳林

  • 出版商: 機械工業
  • 出版日期: 2024-01-01
  • 售價: $774
  • 貴賓價: 9.5$735
  • 語言: 簡體中文
  • 頁數: 568
  • 裝訂: 平裝
  • ISBN: 711174182X
  • ISBN-13: 9787111741824
  • 相關分類: 資訊安全
  • 立即出貨 (庫存 < 4)

買這商品的人也買了...

商品描述

本書共31章,分四部分:
第一部分(第1-3章)帶領讀者進入unidbg的世界,瞭解unidbg的基礎知識及一些基本操作;
第二部分(第4-15章)詳細講解unidbg原理;
第三部分(第16-26章)是模擬執行與補環境實戰,透過各種具體技術案例,幫助讀者掌握unidbg模擬執行、補環境的原理與方法;
第四部分(第27~31章)介紹反制與生產環境部署。

作者簡介

陳佳林,科技極客,「骨灰級」樹莓派愛好者,在機器人、智慧硬件、軟硬件協同開發等方面有較深入的研究。 資深安全技術專家,看雪科技資深研究員,在行動安全領域經驗豐富,多次主持召開銀行、電信、政府等行業的培訓並參與安全項目的研究。作為團隊成員參與GeekPwn 2018挑戰賽並獲得亞軍,多次在“看雪安全開發者峰會”“補天白帽大會”等會議上發表主題演講。 另著有《樹莓派創客:手把手教你搭建機器人》《樹莓派創客:手把手教你玩轉人工智能》。

目錄大綱

目  錄Contents
前 言
第一部分 進入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的loader功能 231
14.4 本章小結 237
第15章 unidbg源碼解析:Hook 238
 

最後瀏覽商品 (1)