逆向因为 REA 的原因门槛已经降低到脚底了,但是对小白来说还是有门槛。
人们刚开始接触逆向工程的时候,卡住的未必是没有学会使用工具,而是面对已经编译过的程序,不知道怎样把机器码、函数、数据以及行为联系起来。
Ghidra 就是用来处理这类分析问题的工具,它是美国国家安全局研究局所创建和维护的一个软件逆向工程框架,具有反汇编、汇编、反编译、图形分析以及编写脚本的能力,并且可以对各种不同的处理器指令集和可执行文件格式进行支持。
它可以被当作一个交互式的工具来使用,也可以作为自动化的程序来进行操作,并且还可以用 Java 或者 Python 语言来编写脚本和扩充功能。

除了把汇编语言翻译成人能够理解的语言之外还有其他的价值
Ghidra 更多地被看作一个合作式的分析工作台,反编译器可以给出高级语言的视角,图形化的工具可以用来跟踪调用链路,脚本以及插件可以把重复性的工作交给自动化的流程去完成。
在面对复杂的样本的时候,研究人员可以在一个工程中整理出函数、数据和注释,并不需要在不同的孤立工具之间切换来获取结果。
官方文档中也有关于 Ghidra 服务器的内容:每个人都可以有自己的项目副本,并且可以把修改提交到共享仓库中去。对于大批量的分析工作来说,它可以采用无界面的方式来进行;也可以用 Python 环境来启动 PyGhidra。
这些都表明了 Ghidra 并不是为了做简单的演示而生的,而是要把它做成一个可以重复利用、可以合作完成的工作流程。
怎么开始
官方预构建版本的安装过程非常简单:首先安装 64 位 JDK 25,然后从 Releases 中下载 ghidra zip 文件,并将其解压到一个新的文件夹中,最后运行 ./ghidraRun 命令(对于 Windows 用户来说,则是使用 ghidraRun.bat 文件),并且注意不能把新版本解压到已有安装目录上。
目前仓库的 readme 中仍然有关于安全提示的内容:部分 Ghidra 版本存在已知的安全漏洞,在使用之前要查阅一下安全建议。在对未知样本进行分析的时候不能忽略掉隔离环境以及样本来源的管理。
如果要通过源码来编译的话,官方给出来的核心流程为:准备好 JDK 25、Gradle 9.1.0 及以上版本、Python 3.9~3.15、相应的平台上的 C/C++ 编译工具;之后运行 gradle -I gradle/support/fetchDependencies.gradle,再运行 gradle buildGhidra。这条路比较适合开发者使用,并不推荐给普通用户作为默认安装途径。
我的判断
Ghidra 所做的是将逆向工作的方式进行了改变,即把"读懂二进制文件"的过程分解为可以观察、记录并且用脚本来实现的部分。对于学习者来说,它给用户提供了一个完整的起点;而对于研究小组而言,则给它们提供了合作以及自动化的基础。
虽然它不会代替分析人员做出决定,但是可以让这些决定建立在更加完整的信息之上。