NationalSecurityAgency/ghidra — NSA 官方软件逆向工程框架
反汇编、反编译与分析已编译程序。
本周新增 Star 7,152 | 仓库 Star 总数 93,470 | Forks 10,499
| 项目 | 信息 |
|---|---|
| 官方仓库 | https://github.com/NationalSecurityAgency/ghidra |
| 官方发布页 | https://github.com/NationalSecurityAgency/ghidra/releases |
| 开发者指南 | https://github.com/NationalSecurityAgency/ghidra/blob/master/DevGuide.md |
| 语言 / 许可 | Java(+ Python 脚本)/ Apache-2.0 |
| 默认分支 | master |
| 最新提交 | 2026-10-22 |
| 一句话定位 | NSA 研究局维护的开源逆向工程框架:反汇编、反编译、图形化分析、脚本化,支持大量处理器指令集与可执行格式,可交互也可自动化运行 |

▲ 图 0:Ghidra 官方界面截图(官方截图)
一、能力概览
- 反汇编、反编译、图形化(graphing)、脚本化
- 支持 大量处理器指令集与可执行格式:Windows、macOS、Linux 上的编译代码
- 用户交互模式 与 自动化模式 皆可
- 支持用 Java 或 Python 自行开发扩展组件与脚本
- NSA 内部用于分析恶意代码与挖掘系统漏洞深度洞察
二、环境要求
支持平台
| 平台 | 要求 |
|---|---|
| Windows | Windows 10(build 1809 或更高) |
| Linux | 支持 |
| macOS | 10.13 或更高 |
⚠️ 所有 32 位操作系统安装已废弃,如有特殊需求请联系 Ghidra 团队。
硬件
- 4 GB RAM
- 1 GB 存储(已安装的 Ghidra 二进制)
- 强烈建议双显示器
软件
| 依赖 | 版本 |
|---|---|
| Java | JDK 25 64 位(运行时 + 开发包)。LTS 版本来源:Adoptium Temurin、Amazon Corretto |
| Python 3 | 3.9 ~ 3.15(调试器支持需 3.7 ~ 3.14;PyGhidra 支持需 3.9 ~ 3.15) |
| Gradle(仅构建源码时) | 9.1.0+(或用内置 Gradle wrapper,需联网) |
| 编译器(仅构建源码时) | Linux/macOS 需 GCC 或 Clang + make;Windows 需 Visual Studio 2017+ 或 MSVC Build Tools(含 MSVC、Windows SDK、C++ ATL) |
三、部署方式
方式 A:官方预编译发行版(推荐)
步骤:
- 安装 JDK 25 64 位 —— 从 Adoptium Temurin 或 Amazon Corretto 获取
- 下载 Ghidra 发行文件 —— 前往 Releases 页面,在 Assets 下拉中找到
ghidra___.zip⚠️ 不要下载名为 "Source Code" 的两个文件中的任何一个 —— 那是源码,不是预编译发行版
- 解压发行文件
⚠️ 不要解压到已有安装目录的 上层(不要覆盖安装)
- 启动 Ghidra
启动命令:
# Linux / macOS
./ghidraRun
# Windows
ghidraRun.bat
或启动 PyGhidra(Python 模式):
# Linux / macOS
./support/pyghidraRun
# Windows
support\pyghidraRun.bat
安装说明要点
- Ghidra 没有传统安装程序。发行文件直接解压就位。
- 优点:个人使用 不需要管理员权限;安装不修改任何系统配置(如 Windows 注册表),卸载 = 删掉目录
- 缺点:不会自动创建桌面快捷方式,也不会出现在开始菜单
- macOS 首次启动:Gatekeeper 可能隔离未签名的 Ghidra 原生组件。两种解决办法:
- 解压 之前 在终端执行:
xattr -d com.apple.quarantine ghidra__.zip - 或首次启动 之前 按"构建原生组件"章节处理
- 解压到某些路径(如
C:\根目录)可能需要管理员权限;把 Ghidra Server 装为服务也需要 - Ghidra 使用 安装目录之外 的目录来管理临时与长期缓存文件(默认用操作系统标准目录)。如需修改,改
support/launch.properties中的相关属性
Java 配置说明
- Ghidra 需要 PATH 上 或
JAVA_HOME环境变量 中有受支持的 JDK。JAVA_HOME优先于 PATH - 若 PATH 上的 Java 版本不满足最低要求,Ghidra 会用它(若 ≥ 1.8)来 辅助定位 系统上受支持的版本;找不到时会提示你输入 Java 主目录路径(bin 目录的父目录)
- 这样设计是为了 最小化对你已有 Java 配置的影响 —— 其它软件依赖的 Java 版本不会被破坏
方式 B:从源码构建(开发用途)
# 1. 下载并解压源码
unzip ghidra-master
cd ghidra-master
# 或:git clone https://github.com/NationalSecurityAgency/ghidra.git
# 2. 下载额外构建依赖到源码仓库
gradle -I gradle/support/fetchDependencies.gradle
# 若未安装 Gradle 但有网络,可用 ./gradlew(或 gradlew.bat)
# 3. 创建开发构建
gradle buildGhidra
压缩后的开发构建位于 build/dist/。
Windows 注意:
gradle需在 PATH 中;未安装 Gradle 时用gradlew.bat。
方式 C:高级开发环境(Eclipse)
# 1. 先按方式 B 完成构建
# 2. 安装 Eclipse IDE for Java Developers
# 3. 准备开发环境
gradle prepdev eclipse buildNatives
# 4. 在 Eclipse 中导入项目
导入步骤:
- File → Import...
- General | Existing Projects into Workspace
- 选择源码仓库根目录
- 勾选 Search for nested projects
- 点击 Finish
Eclipse 完成构建后,可用提供的 Ghidra Eclipse 运行配置 启动并调试。
四、使用方法
4.1 四种运行模式
| 模式 | 启动方式 | 适用场景 |
|---|---|---|
| GUI 模式 | ghidraRun / ghidraRun.bat |
日常交互式分析 |
| Ghidra Server | 见 /server/svrREADME.html |
多用户协作:每人启动本地 Ghidra 副本,但把变更签入共享仓库 |
| 无头(批量)模式 | 见 /support/analyzeHeadlessREADME.html |
自动化分析、CI 集成 |
| 单 Jar 模式 | support/buildGhidraJar 脚本 |
把全部或部分功能压成单个 ghidra.jar,便于命令行无头运行,或作为其他 Java 应用的逆向能力库 |
| PyGhidra 模式 | support/pyghidraRun / pyghidraRun.bat |
原生 CPython 3 支持 |
PyGhidra 细节:
- 进入
/support/ - 运行
pyghidraRun.bat(Windows)或pyghidraRun(Linux/macOS) - 若
pyghidra模块尚未安装,脚本会 主动提示安装 及其依赖
手动安装:
python3 -m pip install --no-index -f /Ghidra/Features/PyGhidra/pypkg/dist pyghidra
也可以在 虚拟环境 中安装并运行 PyGhidra。安装后即可像普通 Python 模块一样使用:可在脚本中 import,也可用
pyghidra/pyghidraw命令启动。详见Ghidra/Features/PyGhidra/src/main/py/README.md。
4.2 GUI 基本工作流
- File → New Project → 非共享项目(个人)或共享项目(团队,含 Server)
- File → Import File → 导入目标二进制(Ghidra 自动识别格式)
- CodeBrowser 窗口打开导入的程序
- 分析:右键程序 → Auto Analyze(或 Analysis → Auto Analyze)
- Ghidra 会自动做反汇编、函数识别、控制流图构建、字符串识别、数据类型推断等 - 导航:
- Symbol Tree(左侧):函数、类、命名空间、标签
- Listing(中间):反汇编 + 伪代码(C / C++)
- Decompiler(右侧):反编译的伪代码
- Defined Strings / Symbols - 重命名与注释:选中符号 → 按
L重命名,;或Ctrl+Alt+Enter添加注释 - 导出:右键函数 → Export Function / Export Program
4.3 扩展与脚本
用户脚本: Ghidra 安装包含 GhidraDev Eclipse 插件(在 /Extensions/Eclipse/GhidraDev/),或在 Script Manager 中点击 Visual Studio Code 图标用 VS Code 编辑脚本。完整的 VS Code 工程可在 CodeBrowser 窗口中 Tools → Create VSCode Module project 创建。
⚠️ GhidraDev Eclipse 插件与 VS Code 集成 只支持针对完整构建的 Ghidra 安装进行开发(需从 Releases 下载)。
脚本语言: Java(Script Manager 内置 Jython / Java 脚本)或外部 PyGhidra 的 Python。
常用内置脚本目录: Ghidra/Features/Base/ghidra_scripts/。
BSim(行为相似度):Ghidra 插件,用于在大量二进制中查找结构相似的函数。
4.4 无头批处理示例
analyzeHeadless /path/to/projects MyProject -import /path/to/binary.exe \
-postScript AnalyzeAllFunctions.java -deleteProject
常用参数:
| 参数 | 作用 |
|---|---|
-import |
导入文件 |
| `-postScript |