
资源介绍
掌握调试艺术,从代码理解到威胁缓解
本书是 Ghidra 逆向工程工具的入门指南,涵盖从基础操作到高级技术的全流程,旨在帮助读者掌握调试、代码分析和威胁缓解技能。内容分为 5 个部分,共 18 章,结合理论与实践,适合安全研究人员、恶意软件分析师等群体。
各部分核心内容
第一部分:Ghidra 入门(第 1-4 章)
Ghidra 基础
Ghidra 的历史:由美国国家安全局(NSA)开发,2017 年通过维基解密 Vault 7 泄露,2019 年正式开源。
与同类工具对比:开源免费、支持多架构、支持团队协作、可处理大型固件等。
安装与运行:涵盖下载预编译版本或从源码编译的步骤,需依赖 Java JDK 17 等工具。
核心功能:项目管理、二进制导入、自动分析、反编译视图等。
Ghidra 脚本自动化
现有脚本使用:通过 Script Manager 调用内置脚本(如字符串分析脚本)。
脚本开发:支持 Java 和 Python,基于 Ghidra API,可实现自定义自动化任务(如批量补丁生成)。
Ghidra 调试模式
开发环境搭建:整合 Eclipse IDE、PyDev 和 GhidraDev 插件。
调试技巧:调试脚本和 Ghidra 组件,分析并修复 Ghidra 的远程代码执行(RCE)漏洞。
Ghidra 扩展
扩展安装:通过内置扩展管理器安装现有扩展(如 SampleTablePlugin)。
扩展开发:基于骨架代码开发自定义扩展(分析器、插件、加载器等)。
第二部分:逆向工程(第 5-7 章)
恶意软件逆向分析
环境搭建:使用 VirtualBox 创建隔离环境,避免恶意软件扩散。
分析流程:查找字符串、导入函数、解析恶意代码片段(如入口点函数、C2 通信函数)。
案例:分析 Alina POS 恶意软件,解析其内存 scraping 和持久化机制。
恶意软件分析脚本
脚本应用:使用 Java/Python 脚本解密恶意软件中的 API 哈希、处理混淆代码。
实战:通过脚本自动解析 Alina 恶意软件的 shellcode,提取 C&C 服务器地址。
无头模式(Headless)分析
适用场景:批量处理二进制文件、自动化分析流程。
操作方法:通过命令行调用 headless 模式,执行预处理脚本、分析二进制、生成报告。
第三部分:二进制分析(第 8-10 章)
二进制差异分析(Binary Diffing)
BSim 工具:通过函数特征向量比对二进制文件,识别相似函数、补丁差异。
应用:漏洞研究中对比漏洞前后版本,定位修复代码。
二进制审计
内存 corruption 漏洞:栈溢出、堆溢出、格式字符串漏洞等原理与识别方法。
漏洞利用:以栈溢出为例,演示如何控制程序流并执行 shellcode。
二进制审计脚本
P-Code 应用:Ghidra 的中间语言,实现跨架构分析。
自动化审计:通过脚本识别危险函数(如 sscanf)的不安全使用,检测潜在漏洞。
第四部分:高级逆向工程扩展(第 11-15 章)
Ghidra 插件开发
插件结构:基于 ProgramPlugin 类,实现自定义 GUI 组件和功能(如函数指标计算插件)。
开发流程:从骨架代码出发,实现插件类和 UI 交互逻辑。
支持新二进制格式
加载器开发:解析新的二进制格式(如老式 DOS 可执行文件 MZ),实现自定义加载逻辑。
文件系统支持:开发文件系统加载器,处理 ZIP 等归档格式。
处理器模块分析
SLEIGH 语言:用于定义处理器指令集,生成 P-Code。
模块开发:创建支持新处理器的模块,定义指令集、寄存器和内存模型。
社区贡献
参与方式:提交 bug 报告、贡献代码、提出新功能建议。
法律规范:遵循 Apache License 2.0,确保贡献合规。
高级逆向技术
符号执行与 SMT 求解:结合 AngryGhidra 插件实现符号执行,使用 Z3 求解器分析约束。
P-Code 与 LLVM 转换:通过工具将 P-Code 转换为 LLVM IR,扩展分析能力。
第五部分:调试与恶意软件分析实践(第 16-18 章)
调试功能
调试器概述:支持本地 / 远程调试,集成 dbgeng、GDB 等后端。
调试技巧:断点管理、寄存器监控、内存查看,支持内核调试。
实战恶意软件脱壳
脱壳原理:识别加壳特征(如 VirtualAlloc 调用),动态调试获取解密后的代码。
案例:分析 Cobalt Strike 样本,提取 C2 服务器地址。
勒索软件逆向
工作流程:初始感染、权限提升、文件加密、勒索通知。
加密分析:识别加密算法(如 AES+RSA 混合加密),提取密钥交换逻辑。
案例:分析 REvil 勒索软件,解析其配置文件和加密机制。
附录与资源
附录 A:各章节习题答案。
代码资源:示例代码托管于 GitHub(https://github.com/PacktPublishing/Ghidra-Software-Reverse-Engineering-for-Beginners---Second-Edition)。
扩展资源:推荐相关书籍、官方文档和工具(如 Ghidra API 文档、LLVM 等)。
适用人群
安全研究人员、恶意软件分析师、漏洞猎人。
具备 Java 或 Python 编程基础,了解软件开发的读者。
希望快速掌握 Ghidra 工具的逆向工程初学者。