万本电子书0元读

万本电子书0元读

顶部广告

unidbg逆向工程:原理与实践电子书

(1)作者经验丰富:从事安全工作多年,看雪论坛版主,在逆向工程和移动安全领域积累了丰富的经验。(2)原理讲解深:通过深解析unidbg主要功能和模块的源代码来讲解unidbg的工作原理和实现细节,授人予渔。(3)包含大量案例:通过大量案例讲解和演示了如何利用unidbg来解决各种逆向工程的难题,手把手教。(4)注重生产实践:无论是理论讲解,还是实战案例,都直瞄准生产环境,带领读者解决工程环境中的真实问题。

售       价:¥

纸质售价:¥96.70购买纸书

9人正在读 | 0人评论 6.3

作       者:陈佳林

出  版  社:机械工业出版社

出版时间:2024-01-03

字       数:1953.1万

所属分类: 科技 > 计算机/网络 > 计算机理论与教程

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
内容介绍这是一本从原理和实践角度讲解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服务器上。这部分内容对批量生产与对抗、大数据风控非常有价值,对于黑灰产、遏制网络犯罪有着非常积极的意义。<br/>【推荐语】<br/>(1)作者经验丰富:从事安全工作多年,看雪论坛版主,在逆向工程和移动安全领域积累了丰富的经验。(2)原理讲解深:通过深解析unidbg主要功能和模块的源代码来讲解unidbg的工作原理和实现细节,授人予渔。(3)包含大量案例:通过大量案例讲解和演示了如何利用unidbg来解决各种逆向工程的难题,手把手教。(4)注重生产实践:无论是理论讲解,还是实战案例,都直瞄准生产环境,带领读者解决工程环境中的真实问题。<br/>【作者】<br/>陈佳林 (ID:r0ysue) 资深安全技术专家,在逆向工程、移动安全领域积累了丰富的经验。曾为政府机关单位提供涉密项目研究发,多次为银行和电信行业以及政府部门提供安全方面的培训服务。看雪论坛的版主和资深讲师,看雪“安卓高级研修班”负责人,在看雪安全发者峰会、GeekPwn 发表主题演讲,在看雪论坛、安全客、Freebuf 等平台发表大量技术文章。著有《安卓 Frida 逆向与抓包实战》《安卓Frida 逆向与协议分析》《Frida 安卓 SO 逆向深实践》等书籍。源项目r0capture 在 Github 的 star 数量超过 5000 个。<br/>
目录展开

·内容简介·

书名页

Preface 前言

第一部分  Part 1 进入unidbg的世界

Chapter 1 第1章 unidbg环境准备与快速上手

1.1 r0env环境介绍与集成

1.1.1 r0env各组件介绍

1.1.2 r0env下载及安装

1.2 IDEA安装及配置

1.3 第一个unidbg项目

1.3.1 unidbg介绍

1.3.2 unidbg下载与运行示例

1.3.3 unidbg示例讲解

1.4 本章小结

Chapter 2 第2章 unidbg模拟执行初探

2.1 第一个NDK项目

2.1.1 使用Android Studio创建NDK项目

2.1.2 编写自己的so业务代码

2.2 unidbg的符号调用与地址调用

2.2.1 unidbg主动调用前置准备

2.2.2 unidbg主动调用so函数

2.2.3 unidbg部分API简单讲解

2.3 本章小结

Chapter 3 第3章 unidbg补环境、Hook与Patch

3.1 为so添加交互:使用JNI接口编写md5方法

3.2 使用unidbg修补执行环境并模拟执行

3.3 脱离编译器,使用命令行编译so

3.4 unidbg的Hook

3.5 unidbg的Patch

3.6 本章小结

第二部分  Part 2 unidbg原理

Chapter 4 第4章 ELF文件执行视图解析

4.1 ELF文件结构

4.1.1 ELF头部结构

4.1.2 程序头部表

4.1.3 动态节区_DYNAMIC段

4.2 深入jelf代码细节,探究ELF解析

4.2.1 分析原版jelf代码

4.2.2 分析unidbg版jelf代码

4.3 本章小结

Chapter 5 第5章 Unicorn的初级使用与初探Linker

5.1 Unicorn的初级使用:模拟执行与Hook

5.1.1 使用Unicorn进行模拟执行

5.1.2 Unicorn的Hook

5.1.3 Keystone与Capstone

5.2 初探Android系统源码

5.2.1 Java层代码追踪

5.2.2 Native层代码追踪

5.3 本章小结

Chapter 6 第6章 深入Linker:so的加载、链接、初始化

6.1 so的加载过程

6.2 so的链接过程

6.3 so的初始化操作

6.4 本章小结

Chapter 7 第7章 使用Unicorn模拟Linker:so的加载过程

7.1 模拟Linker:环境准备

7.2 模拟Linker:so的加载

7.3 动态调试Linker,探究so的内存布局图

7.4 本章小结

Chapter 8 第8章 使用Unicorn模拟Linker:so的链接过程

8.1 so的依赖库加载过程

8.2 so的动态链接

8.3 初尝试:使用unidbg模拟执行简单so文件

8.4 探究unidbg的Linker代码细节

8.4.1 unidbg加载so文件代码入口

8.4.2 处理so信息并载入内存

8.4.3 对so的依赖库进行处理

8.4.4 重定位操作

8.4.5 处理so的初始化信息与生成module对象

8.4.6 执行初始化

8.5 本章小结

Chapter 9 第9章 R0dbg实战与Unidbg_FindKey

9.1 模拟Linker:so的初始化过程

9.2 指令追踪与排错

9.2.1 TLS线程局部存储环境初始化

9.2.2 R0dbg对系统调用进行处理

9.3 使用R0dbg模拟执行so

9.4 Unidbg_FindKey牛刀小试

9.5 本章小结

Chapter 10 第10章 unidbg源码解析:AndroidEmulator

10.1 创建AndroidEmulator

10.2 创建FileSystem

10.3 创建Backend

10.4 创建SvcMemory

10.5 本章小结

Chapter 11 第11章 unidbg源码解析:DalvikVM

11.1 分析createDalvikVM()

11.2 Dvm相关类介绍

11.2.1 BaseVM解析

11.2.2 DalvikVM解析

11.2.3 DvmObject解析

11.2.4 DvmClass解析

11.3 本章小结

Chapter 12 第12章 unidbg源码解析:模拟执行流程追踪

12.1 编写含JNI交互的MD5算法并模拟执行

12.1.1 编写含JNI交互的so

12.1.2 使用unidbg进行模拟执行

12.2 模拟执行流程追踪:寻找函数

12.3 模拟执行流程追踪:处理参数并模拟执行

12.4 本章小结

Chapter 13 第13章 unidbg源码解析:JNI交互流程追踪

13.1 JNI注册

13.2 JNI指令执行

13.3 本章小结

Chapter 14 第14章 unidbg源码解析:Memory

14.1 Memory模块的创建

14.2 AndroidElfLoader的方法实现

14.2.1 内存相关方法实现

14.2.2 栈空间相关方法实现

14.2.3 用户常用方法解析

14.2.4 虚拟模块

14.3 加载so的loader功能

14.4 本章小结

Chapter 15 第15章 unidbg源码解析:Hook

15.1 unidbg的Hook框架

15.1.1 Hook框架的使用

15.1.2 Hook源码分析

15.2 Debugger模块解析

15.2.1 Console Debugger的使用

15.2.2 Debugger源码分析

15.3 本章小结

第三部分  Part 3 模拟执行与补环境实战

Chapter 16 第16章 unidbg实战:I/O重定向

16.1 分析App的内部逻辑

16.1.1 了解App的运行流程

16.1.2 Java层逻辑分析

16.1.3 so层逻辑分析

16.2 unidbg模拟执行分析

16.2.1 unidbg模拟执行saveSN()方法

16.2.2 unidbg的I/O重定向

16.3 本章小结

Chapter 17 第17章 unidbg实战:Debugger自吐

17.1 分析App的内部逻辑

17.1.1 了解App的运行流程

17.1.2 Java层逻辑分析

17.1.3 so层逻辑分析

17.2 使用unidbg工具进行分析

17.2.1 使用unidbg进行模拟执行

17.2.2 使用Debugger模块实现自吐

17.2.3 使用Patch进行自吐

17.3 本章小结

Chapter 18 第18章 unidbg实战:指针参数与Debugger

18.1 指针参数的使用

18.1.1 对App进行分析

18.1.2 使用unidbg进行模拟执行

18.2 快速识别AES算法

18.2.1 对App进行分析

18.2.2 使用unidbg进行模拟执行

18.3 本章小结

Chapter 19 第19章 unidbg实战:魔改Base64还原

19.1 逆向环境搭建

19.2 APK分析

19.3 so文件详细分析

19.3.1 基本类型手动修改

19.3.2 主体代码分析

19.4 使用unidbg辅助分析so

19.4.1 使用unidbg主动调用Native层的算法

19.4.2 魔改Base64核心步骤分析

19.5 本章小结

Chapter 20 第20章 unidbg实战:使用unidbg动态分析内存中的数据

20.1 环境搭建

20.2 APK基本分析

20.2.1 按钮事件分析

20.2.2 对输入框的内容进行判断

20.3 使用IDA静态分析so并使用unidbg动态验证

20.3.1 静态代码块说明

20.3.2 IDA分析

20.4 本章小结

Chapter 21 第21章 unidbg实战:使用unidbg主动调用fork进程

21.1 样本情景复现

21.2 样本反编译分析

21.3 so中代码的分析

21.4 使用unidbg对fork进程中的函数做处理

21.5 本章小结

Chapter 22 第22章 unidbg补环境实战:补环境入门

22.1 为什么要补环境

22.2 unidbg补环境的案例情景复现

22.3 模拟执行so

22.3.1 参数获取

22.3.2 unidbg代码初始化

22.3.3 目标函数的调用

22.3.4 补环境说明

22.3.5 补环境实战

22.4 本章小结

Chapter 23 第23章 unidbg补环境实战:标识记录

23.1 样本一:如何补JNI_OnLoad环境

23.1.1 基本环境搭建

23.1.2 运行项目,异常分析

23.2 样本二:文件标识的补环境策略

23.2.1 环境搭建

23.2.2 文件标识策略

23.3 样本总结

23.4 本章小结

Chapter 24 第24章 unidbg补环境实战:设备风控

24.1 Android系统API补全策略

24.1.1 ActivityThread

24.1.2 android_id

24.2 目录获取

24.3 样本最后一个函数的调用

24.4 本章小结

Chapter 25 第25章 unidbg补环境实战:补环境加强

25.1 上文回顾

25.2 样本的框架搭建

25.3 补环境实操

25.3.1 getApplication环境补充

25.3.2 无障碍服务的补环境

25.4 本章小结

Chapter 26 第26章 unidbg补环境实战:总结

26.1 补环境初始化

26.1.1 架构选择

26.1.2 进程名称初始化

26.1.3 处理器后端的设置

26.1.4 Android根目录设置

26.1.5 Android虚拟机创建

26.1.6 加载so

26.2 补环境适用场景

26.2.1 unidbg的报错

26.2.2 何时补环境

26.3补环境的规范

26.3.1 通用规则

26.3.2 复杂类型的规则

26.4 本章小结

第四部分  Part 4 反制与生产环境部署

Chapter 27 第27章 Anti-unidbg系列:环境变量检测

27.1 Linux中的环境变量

27.2 Android中的环境变量

27.2.1 查看和设置环境变量

27.2.2 常见环境变量说明

27.3 环境变量源码解析

27.3.1 Java层环境变量读取和设置

27.3.2 Native层环境变量读取和设置

27.3.3 情景模拟

27.4 unidbg如何设置环境变量

27.5 本章小结

Chapter 28 第28章 Anti-unidbg系列:xHook检测

28.1 xHook的基本使用

28.1.1 项目简介

28.1.2 项目编译

28.1.3 xHook API介绍

28.1.4 样本编写

28.2 xHook的原理阐述

28.2.1 文件编译和测试

28.2.2 出现的问题

28.2.3 ELF文件格式

28.2.4 Linker

28.2.5 重定向追踪

28.2.6 内存检索

28.2.7 跳转验证

28.3 xHook检测实现

28.3.1 获取ELF文件在内存中的首地址

28.3.2 Linker的复写

28.4 unidbg xHook检测

28.5 补充Inline Hook检测

28.5.1 Inline Hook通用检测思路

28.5.2 Inline Hook模块检测思路

28.6 本章小结

Chapter 29 第29章 Anti-unidbg系列:JNI层常见函数处理

29.1 FindClass反制策略

29.1.1 FindClass介绍

29.1.2 FindClass基本使用

29.2 methodID反制策略

29.3 本章小结

Chapter 30 第30章 Anti-unidbg系列:unidbg常规检测总结

30.1 检测说明

30.2 基地址检测

30.3 JNI环境之JNI调用

30.4 JNI环境之类检测

30.5 文件描述符

30.6 uname

30.7 运行时间检测

30.8 检测Unicorn

30.9 本章小结

Chapter 31 第31章 unidbg生产环境部署

31.1 Spring Boot框架的基本使用方法

31.2 Spring Boot和unidbg结合

31.3 unidbg-boot-server简介

31.3.1 简介

31.3.2 常规配置项说明

31.4 unidbg-boot-server项目实例

31.4.1 项目演示

31.4.2 添加模拟执行

31.5 本章小结

推荐阅读

作者简介

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部