首页>参考读物>计算机科学与技术>安全

unidbg逆向工程:原理与实践
作者 : 陈佳林 著
出版日期 : 2024-01-03
ISBN : 978-7-111-74182-4
定价 : 129.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 :
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

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

图书特色

资深安全技术专家撰写,unidbg框架作者KR推荐
深入解析unidbg使用方法、工作原理、实现细节,为生产环境中的常见难题提供解决方案与实战案例

上架指导

计算机\安全

封底文字

——KR unidbg框架作者
unidbg最大的场景在于可以利用廉价的x86服务器,进行批量化地部署、大规模地生成纯ARM的原生算法结果,尤其是哈希签名算法、加解密算法等需要在收发包中携带的校验或Payload字段。在这一场景下具有无可比拟且无可替代的优势。

——白龙 unidbg社区布道师
unidbg是逆向工程师进行算法还原的终极工具箱。它使得分析和调试未知或加密的 ARM代码变得简单,支持各种高级功能,如函数hook和运行时修改。无论是学术研究还是安全分析,unidbg 都是不可或缺的工具。

——hluwa 开源工具obpo-plugin、DEXDump、Wallbreaker作者
unidbg是理解和掌握 ARM 架构及其应用的绝佳工具。它不仅为开发者提供了无缝的跨平台调试体验,还大大简化了复杂ARM应用和库的逆向过程。如果你希望在自己的电脑上轻松调试ARM代码,unidbg是你的首选。

——蔡晋 公众号“菜鸟学Pyhton”主理人
unidbg不仅是工程师的实用工具,也是教育和研究领域的宝贵资源。它提供了一个实用的平台,可以帮助我们深入了解安卓系统架构、ARM指令与ELF二进制文件格式分析,是计算机科学和软件工程领域的必备工具,也是爬虫工程师学习安卓SO逆向、批量参数生成的利器。

作者简介

陈佳林 著:技术极客,“骨灰级”树莓派爱好者,在机器人、智能硬件、软硬件协同开发等方面有较深入的研究。
资深安全技术专家,看雪科技高级研究员,在移动安全领域经验丰富,多次主持召开银行、电信、政府及等行业的培训并参与安全项目的研究。作为团队成员参与GeekPwn2018挑战赛并获得亚军,多次在“看雪安全开发者峰会”“补天白帽大会”等会议上发表主题演讲。
著有《树莓派创客:手把手教你搭建机器人》《树莓派创客:手把手教你玩转人工智能》。

图书目录

《unidbg逆向工程:原理与实践》目录
前言
为何写作本书
本书主要内容
本书读者对象
本书内容特色
资源和勘误
致谢
第一部分 进入unidbg的世界
第1章 unidbg学习环境
1.1 统一环境:虚拟机/`Kali`
1.2 [r0env的安装和介绍](https://mp.weixin.qq.com/s/gBdcaAx8EInRXPUGeJ5ljQ)
1.3Idea的安装和使用
1.4 认识unidbg
第2章 unidbg执行SO函数
2.1 ndk实现加密算法
2.2 unidbg调用SO函数
2.3 符号调用和地址调用
2.4 unidbg的参数问题
第3章 unidbg补环境
3.1 Jni调用Java方法
3.2 unidbg的Jni
3.3 unidbg补Java环境
3.4 unidbg补环境思想
第4章 unidbg中Hook和Patch
4.1 命令行编译SO
4.2 unidbg的Hook框架
4.3 Patch的思路和实现
4.4 Keystone的使用
第二部分 unidbg原理
第5章 ELF文件详解
5.1 xxx文件解析
5.1.1 ElfHeader
5.1.2 ElfProgramHeader
5.1.3 ElfDynamic
5.1.4 ElfSymble
5.2 Java使用Jelf库解析Elf文件
5.2 xxx文件解析
5.2.1 DT_STRTAB
5.2.2 DT_NEEDED
5.2.3 DT_HASH
5.2.4 DT_REL* DT_INIT*
5.3 xxx
5.3.1 Unicorn的引入
5.3.2 使用与KeyStone和Capstone的配合
第6章 Linker详解
6.1Android加载So流程
6.2 Linker系统源码分析
6.3 Linker的加载步骤
6.4 加载、链接和初始化
第7章 Unicorn模拟Linker加载SO
7.1 unidbg加载执行So的核心原理
7.2 彻底搞懂Linker的加载机制
7.3 自实现Linker的加载、链接
7.4 模拟执行So中的函数(初始化/普通)
7.5 Unicorn模拟执行So初始化
7.6 So中初始化函数模拟执行
7.7 Unicorn-Trace汇编指令
7.8 Unicorn排查运行异常
7.9 unidbg系统调用处理
第8章 unidbg源码详解
8.1 AndroidEmulator源码解析
8.2 DalvikVM源码解析
8.3 Memory源码解析
8.4 Hook源码解析
8.5 Memory源码解析
8.6 Console Debugger源码解析
第9章 unidbg信号与多线程
9.1 Linux信号机制详解
9.2 自定义信号处理函数
9.3 信号处理函数介绍
9.4 unidbg中对信号的处理
9.5 linux多线程的基本操作
9.6 unidbg多线程案例实操和体验
9.7 so中多线程该如何解决
9.8 unidbg新版更新对比
9.9 puts打印的执行效果
9.10 为什么不能while(1)
9.11 子线程是如何标志完成的
9.12 pthread_exit(0)问题
9.13 线程创建、退出、回收、分离、取消
第10章 多线程同步问题
10.1 线程回收遗留问题
10.2 为什么要线程同步?
10.3 互斥锁解决线程同步
-10.4 unidbg会产生线程同步问题吗?
10.5 return 0 问题(上节遗留问题)
10.6 signal处理流程
10.7 多线程回顾总结
第11章 自己实现一个类似的项目:r0dbg
11.1 完善对syscall的基本处理
11.2 完成对libc的初始化调用
11.3 Trace指令辅助进行排错
11.4 加载So且对算法模拟执行
11.5 unidbg-keyFinder牛刀小试
>11.6 Unicorn开启VFP:https://github.com/unicorn-engine/unicorn/issues/1080
>11.7 Arm协处理器介绍:https://blog.csdn.net/wxh0000mm/article/details/89518499
>11.8 asjojcxzx90cnd1nd

第三部分 unidbg实战与生产环境部署
第13章 unidbg Hook辅助算法还原和样本实战
13.1 unidbg Hook的各种使用姿势、原理解析
13.2 Console Debugger使用方法
13.3 unidbg Hook辅助算法还原
13.4 龙哥unidbg_FindKey原理
第14章 补环境和算法分析样本实战
14.1 IDA静态分析样本so基本流程
14.2 unidbg加载so解析符号执行任意地址算法
14.3 IO重定向简介、原理及功能和作用
14.4 unidbg补环境之IO重定向如何补
14.5 unidbg辅助算法分析之Console Debugger
第15章 算法习题分析样本实战
15.1 样本分析流程:Java->native->unidbg
15.2 IDA+unidbg动静结合分析
15.3 unidbg模拟So算法执行
15.4 unidbg patch使用场景
第16章 unidbg补环境实战+总结
16.1 unidbg环境到底该怎么补?
16.2 unidbg是如何代理JNI层的?
16.3 unidbg补环境经典案例实战
16.4 补环境实战+底层原理剖析
16.5 彻底解决unidbg环境问题
16.6 形式补全/传null/传TAG/传标识
第17章 Anti-unidbg系列-环境变量-xHook检测效果检测
17.1 linux环境变量
17.2 安卓中环境变量的添加和读取
17.3 环境变量源码解析
17.4 unidbg添加环境变量
17.5 unidbg环境变量的对抗
17.6 xHook检测和原理剖析
第18章 Anti-unidbg系列-JNI层、Inline检测
18.1 FindClass在unidbg中的实现
18.2 MethodID在anti中的应用
18.3 未实现的部分JNI接口
18.4 字节对齐检测差异
18.5 Inline Hook核心原理
18.6 Inline Hook检测方案
18.7 Inline Hook检测实现
18.8 dl_iterater_phdr接口检测
第19章 unidbg生产环境部署
19.1 SpringBoot初识
19.2 SpringBoot项目搭建
19.3 SpringBoot项目结合unidbg
19.4 成品开源项目学习
第四部分 unidbg辅助算法还原
第20章 ARM汇编与C++逆向-ARM初识、指令集
20.1 ARM汇编初步认识
20.2 ARM可执行文件的生成过程
20.3 ARM常见汇编指令介绍
20.4 ARM常见汇编指令分类
20.5 ARM中的寻址方式
20.6 ARM汇编程序开发
20.7 ARM指令集、Thumb指令、AArch64指令集
第21章 ARM汇编与C++逆向-C程序逆向分析
21.1 数据类型
21.2 运算符
21.3 分支与跳转
21.4 循环
21.5 GDB调试初步体验与ARM汇编学习
21.6 GDB辅助调试学习
第22章 从汇编进行非标准算法还原
22.1 CTF汇编实战非标准算法还原
22.2 人工脑力进行"口算"F5功能
22.3 unidbgDebugger辅助算法还原
22.4 逆向逻辑分析还原出flag
22.5 C程序逆向基操总结+巩固

教学资源推荐
作者: 主编:王瑞民副主编:史国华 李娜参编(按姓氏笔画顺序):杨姣 宋伟 高淼 龚玉猛
作者: [美]肖恩-菲利普·奥里亚诺(Sean-Philip Oriyano)迈克尔·G. 所罗门(Michael G. Solomon)著
作者: 黄欣沂 赖建昌 著
参考读物推荐
作者: [美]理查德·贝特利奇(Richard Bejtlich) 著
作者: 王淑江
作者: 张阮阮 等编著