- Ghidra权威指南
- (美)Chris Eagle等
- 2338字
- 2023-02-28 21:33:30
前言
我们编写本书的目的是将 Ghidra 介绍给现在和未来的逆向工程师。在熟练的逆向工程师手中,Ghidra 简化了分析过程,并允许用户自定义和扩展其功能,以满足个人需求并改进工作流程。新手逆向工程师使用Ghidra也很容易,特别是它包含的反编译器可以帮助他们在开始探索二进制分析领域时更清楚地理解高级语言和反汇编清单之间的关系。
写一本关于Ghidra的书是一项具有挑战性的任务。Ghidra是一个不断发展的复杂的逆向工程工具套件,开源社区在不断地改进和扩展其功能。与许多新的开源项目一样,Ghidra 已经通过一系列快速释放的改进版本,开启了它的开源生涯。编写本书的主要目标是确保随着Ghidra的发展,本书的内容仍能够持续为读者提供广泛而深入的基础知识,以理解和有效利用不断演化的Ghidra版本来应对逆向工程的挑战。我们尽可能地保持本书适用于各种版本。幸运的是,新版本的Ghidra有良好的文档记录,如果遇到了与本书有差异的地方,详细的变更清单会提供特定版本的描述。
本书简介
这本书是第一本关于Ghidra的综合性书籍,旨在成为用户使用Ghidra进行逆向工程的百宝书。它提供介绍性内容以将新的探索者带入逆向工程世界,提供高级内容以扩展经验丰富的逆向工程师的世界观,并为新手和资深 Ghidra 开发者提供示例,以便他们可以继续扩展 Ghidra 的功能并成为Ghidra社区的贡献者。
本书面向的读者
本书面向有抱负和经验丰富的软件逆向工程师。如果您还没有逆向工程经验,那也没有关系,因为前面的章节介绍了逆向工程,以及使用Ghidra探索和分析二进制文件所需的背景材料。经验丰富的逆向工程师可以快速浏览前两部分,以获得对Ghidra的基本了解,然后跳转到感兴趣的特定章节。有经验的Ghidra用户和开发者可以关注后面的章节,以创建新的Ghidra扩展,并应用他们的经验和知识为Ghidra项目贡献新内容。
本书的结构
全书分为五个部分。第一部分介绍反汇编、逆向工程和Ghidra项目。第二部分涵盖Ghidra的基本用法。第三部分演示Ghidra的自定义和自动化,以使其为您工作。第四部分更深入地解释Ghidra模块的特定类型和支持概念。第五部分演示将 Ghidra 应用于逆向工程时可能遇到的一些实际情况。
第一部分 简介
第1章 反汇编简介
介绍反汇编理论和实践,并讨论两种常见反汇编算法的一些优缺点。
第2章 逆向与反汇编工具
讨论了可用于逆向工程和反汇编的主要工具类别。
第3章 初识Ghidra
初识Ghidra,了解它的起源,以及如何获取并开始使用这个免费的开源工具套件。
第二部分 Ghidra的基本用法
第4章 开始使用Ghidra
您与Ghidra的旅程从本章开始。当新建项目、分析文件并开始理解Ghidra图形用户界面(GUI)时,您将第一次看到Ghidra的实际应用。
第5章 Ghidra数据显示
介绍Ghidra用于文件分析的主要工具CodeBrowser,还将探讨它的几个主要的显示窗口。
第6章 理解Ghidra反汇编
理解Ghidra反汇编和导航的基本概念。
第7章 反汇编操作
学习如何对Ghidra的分析进行补充,并在自己的分析过程中操作Ghidra反汇编。
第8章 数据类型和数据结构
学习如何操作和定义编译程序中简单和复杂的数据结构。
第9章 交叉引用
详细介绍交叉引用、它们如何支持图形,以及它们在理解程序行为中所起的关键作用。
第10章 图形
介绍Ghidra的图形功能以及如何将图形作为二进制分析工具。
第三部分 让Ghidra为您工作
第11章 协作逆向工程
介绍Ghidra的一项独特功能——将Ghidra作为协作工具。学习如何配置Ghidra服务器,并与其他分析人员共享项目。
第12章 自定义Ghidra
了解如何通过配置项目和工具来自定义Ghidra,以支持个人的分析工作流程。
第13章 Ghidra功能扩展
介绍如何生成和应用库签名与其他专门的内容,以便Ghidra能够识别新的二进制结构。
第14章 Ghidra脚本开发
介绍如何在Ghidra内部编辑器中,通过Python和Java调用基本的Ghidra脚本功能。
第15章 Eclipse和GhidraDev
将Eclipse集成到Ghidra中,并探索这种组合所提供的强大脚本功能,包括构建新分析器的工作示例,从而将Ghidra脚本提升到一个全新的水平。
第16章 Ghidra无头模式
介绍在无需 GUI 的无头模式下使用 Ghidra,并了解这种模式在常见的大规模重复性任务中的优势。
第四部分 深入探索
第17章 Ghidra加载器
深入了解Ghidra如何导入和加载文件,学习构建新的加载器来处理以前无法识别的文件类型。
第18章 Ghidra处理器
介绍Ghidra用于定义处理器架构的SLEIGH语言,探讨向Ghidra添加新处理器和指令的过程。
第19章 Ghidra反编译器
深入了解Ghidra最受欢迎的功能之一:Ghidra反编译器。了解它在幕后是如何工作的,以及它如何帮助分析的过程。
第20章 编译器变体
帮助您理解在使用不同编译器和针对不同平台编译的代码中可能看到的变化。
第五部分 实际应用
第21章 混淆代码分析
学习如何使用Ghidra在静态分析上下文中分析混淆代码,从而无须执行该代码。
第22章 修补二进制文件
介绍了一些在分析过程中使用Ghidra修补二进制文件的方法,包括在Ghidra内部修补以及为原始二进制文件创建新的修补版本。
第23章 二进制差分和版本跟踪
介绍了一项Ghidra特性,它允许您识别两个二进制文件之间的差异,并简要介绍了Ghidra高级的版本跟踪功能。
附录 IDA用户的Ghidra使用指南
如果您是经验丰富的IDA用户,本附录将为您提供将IDA术语和用法映射到Ghidra中类似功能的提示和技巧。
注:访问配套网站链接0-1和链接0-2获取本书中包含的代码清单。
致谢
如果没有No Starch Press出版社专业人员的帮助和支持,这本书是不可能完成的。Bill Pollock和Barbara Yien对于我们创作一本符合愿景的Ghidra图书给予了宝贵的支持。Athabasca Witschi在内容上的初步反馈给我们提供了宝贵的见解和指导。Laurel Chun的持续支持和耐心帮助让这本书变成了我们引以为豪的成品。我们还要感谢所有幕后工作人员为实现这一梦想所付出的辛勤工作,感谢Katrina Taylor、Barton D.Reed、Sharon Wilkey和Danielle Foster。
感谢技术编辑Brian Hay的审阅。他在Ghidra方面的知识和经验确保书中的技术内容扎实,他的教学经验也启迪了我们,令本书既能吸引新手,也能吸引经验丰富的逆向工程师。
感谢国家安全局的Ghidra开发团队,无论是过去还是现在,他们构建了Ghidra并将其作为开源项目与全球分享。
Kara 特别要感谢 Ben 在她学习技术时的耐心,和 Katie 在她写作时给予的耐心。她要感谢 Jen鼓舞人心的介绍,以及Dickie和Lenora的信任。最后,她还要感谢Brian的幽默和每时每刻的支持。
没有所有人的支持,就不可能有这本书。