机械工业出版社旗舰店店铺主页二维码
机械工业出版社旗舰店 微信认证
微信扫描二维码,访问我们的微信店铺
你可以使用微信联系我们,随时随地的购物、客服咨询、查询订单和物流...

官网 unidbg逆向工程 原理与实践 陈佳林 网络空间安全技术丛书 unidbg使用方法工作原理实现细节 unidbg原理实践技术书籍

64.50
运费: 免运费
官网 unidbg逆向工程 原理与实践 陈佳林 网络空间安全技术丛书 unidbg使用方法工作原理实现细节 unidbg原理实践技术书籍 商品图0
官网 unidbg逆向工程 原理与实践 陈佳林 网络空间安全技术丛书 unidbg使用方法工作原理实现细节 unidbg原理实践技术书籍 商品缩略图0

商品详情

书名:unidbg逆向工程:原理与实践
定价:129.0
ISBN:9787111741824
作者:陈佳林
版次:1

内容提要:


内容介绍

这是一本从原理和实践角度讲解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服务器上。这部分内容对批量生产与对抗、大数据风控非常有价值,对于打击黑灰产、遏制网络犯罪有着非常积极的意义。






目录:


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

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 补环境实操 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



机械工业出版社旗舰店店铺主页二维码
机械工业出版社旗舰店 微信公众号认证
扫描二维码,访问我们的微信店铺
随时随地的购物、客服咨询、查询订单和物流...

官网 unidbg逆向工程 原理与实践 陈佳林 网络空间安全技术丛书 unidbg使用方法工作原理实现细节 unidbg原理实践技术书籍

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

打开微信,扫一扫

或搜索微信号:cmp1952
机工书院官方微信公众号

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏