书籍详情

unidbg逆向工程:原理与实践

unidbg逆向工程:原理与实践

作者:陈佳林

出版社:机械工业出版社

出版时间:2024-01-01

ISBN:9787111741824

定价:¥129.00

购买这本书可以去
内容简介
  内容介绍这是一本从原理和实践角度讲解unidbg的著作,不仅深入解析了unidbg的使用方法、工作原理、实现细节,而且详细讲解了如何用unidbg解决生产环境中的各种逆向工程难题。它是作者多年安全工作经验的总结,得到了unidbg框架作者的高度评价和推荐。全书共31章,分为四个部分。第一部分(第1~3章) unidbg基础主要介绍了unidbg的基本使用和操作,包括工作环境的准备、so文件加载、简单补环境、Hook和Patch的方法等。第二部分(第4~15章) unidbg原理与实现通过源码分析的方式对unidbg的原理与实现进行了详细的剖析,首先分析了Unicorn模拟linker实现so的加载、链接、初始化的原理,然后深入分析了unidbg主要功能和模块的源码实现,包括AndroidEmulator、JNI交互流程追踪、DalvikVM、Memory、Hook等。第三部分(第16~26章) 补环境与模拟执行实战通过实战案例讲解了unidbg在生产环境中的使用,包括如I/O重定向、Debugger自吐,指针参数与Debugger、魔改Base64还原、使用unidbg动态分析内存中的数据、使用unidbg主动调用fork进程,并对补环境中的补环境入门、标识记录、设备风控、补环境加强等进行分析,指导读者编写实际的补环境代码,更好地将理论知识运用于实践中。第四部分(第27~31章) 反制与生产环境部署。介绍了环境变量检测、xHook框架检测、JNI层常见函数处理等,对常规检测进行了总结,并介绍了在检测之后如何把so部署到x86服务器上。这部分内容对批量生产与对抗、大数据风控非常有价值,对于打击黑灰产、遏制网络犯罪有着非常积极的意义。
作者简介
  陈佳林 (ID:r0ysue)资深安全技术专家,在逆向工程、移动安全领域积累了丰富的经验。曾为政府机关单位提供涉密项目研究开发,多次为银行和电信行业以及政府部门提供安全方面的培训服务。看雪论坛的版主和资深讲师,看雪“安卓高级研修班”负责人,在看雪安全开发者峰会、GeekPwn 发表主题演讲,在看雪论坛、安全客、Freebuf 等平台发表大量技术文章。著有《安卓 Frida 逆向与抓包实战》《安卓Frida 逆向与协议分析》《Frida 安卓 SO 逆向深入实践》等书籍。开源项目r0capture 在 Github 的 star 数量超过 5000 个。
目录

目  录?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
猜您喜欢

读书导航