UNIDBG逆向工程:原理與實務

陳佳林

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

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

商品描述

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

目錄大綱

目  录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