Ghidra软件逆向工程框架
Ghidra是由国家安全局研究理事会创建和维护的软件逆向工程(SRE)框架。该框架包含一套功能齐全、高端的软件分析工具,使用户能够在Windows、macOS和Linux等各种平台上分析编译后的代码。其功能包括反汇编、汇编、反编译、图形化和脚本编写,以及数百种其他功能。Ghidra支持多种处理器指令集和可执行文件格式,可以在用户交互和自动化模式下运行。用户还可以使用Java或Python开发自己的Ghidra扩展组件和/或脚本。
为了支持NSA的网络安全任务,Ghidra被设计用于解决复杂SRE工作中的扩展和团队协作问题,并提供可定制和可扩展的SRE研究平台。NSA已将Ghidra的SRE能力应用于各种问题,包括分析恶意代码和为寻求更好地了解网络和系统潜在漏洞的SRE分析师生成深入见解。
如果你是美国公民,对像这样的项目感兴趣,想为NSA开发Ghidra和其他网络安全工具以帮助保护我们的国家和盟友,可以考虑申请加入我们。
安全警告
**警告:**某些版本的Ghidra存在已知的安全漏洞。在继续之前,请阅读Ghidra的安全公告,以更好地了解可能对你造成的影响。
安装
要安装官方预构建的多平台Ghidra版本:
- 安装JDK 21 64位
- 下载Ghidra发布文件
- **注意:**官方多平台发布文件名为
ghidra_<版本>_<发布>_<日期>.zip
,可在"Assets"下拉菜单中找到。下载名为"Source Code"的文件不适用于此步骤。
- **注意:**官方多平台发布文件名为
- 解压Ghidra发布文件
- 启动Ghidra:
./ghidraRun
(Windows系统使用ghidraRun.bat
)
有关安装和运行Ghidra发布版的其他信息和故障排除提示,请参阅提取的Ghidra发布目录中的docs/InstallationGuide.html
。
构建
要从此源代码库为你的平台创建最新的开发版本:
安装构建工具:
- JDK 21 64位
- Gradle 8.5+(如果有互联网连接,也可使用提供的Gradle包装器)
- Python3(版本3.9至3.12)及其捆绑的pip
- make、gcc和g++(仅限Linux/macOS)
- Microsoft Visual Studio 2017+或Microsoft C++ Build Tools,并安装以下组件(仅限Windows):
- MSVC
- Windows SDK
- C++ ATL
下载并解压源代码:
[从GitHub下载][master]
unzip ghidra-master
cd ghidra-master
**注意:**除了下载压缩源代码,你也可以选择克隆GitHub仓库:git clone https://github.com/NationalSecurityAgency/ghidra.git
将额外的构建依赖项下载到源代码仓库:
**注意:**如果有互联网连接且你没有安装Gradle,以下gradle
命令可替换为./gradle(.bat)
。
gradle -I gradle/support/fetchDependencies.gradle
创建开发版本:
gradle buildGhidra
压缩后的开发版本将位于build/dist/
目录。
有关构建Ghidra的更详细信息,请阅读开发者指南。
如遇构建问题,请查看已知问题部分以寻找可能的解决方案。
开发
用户脚本和扩展
Ghidra安装支持用户通过Eclipse的GhidraDev插件编写自定义脚本和扩展。该插件及其相应说明可在Ghidra发布版的Extensions/Eclipse/GhidraDev/
目录或此链接中找到。
**注意:**Eclipse的GhidraDev插件仅支持针对完全构建的Ghidra安装进行开发,这些安装可从发布页面下载。
高级开发
要开发Ghidra工具本身,强烈建议使用Eclipse,Ghidra的开发过程已针对Eclipse进行了高度定制。
安装构建和开发工具:
- 按照上述构建说明操作,确保构建过程无错误完成
- 安装Eclipse IDE for Java Developers
准备开发环境:
gradle prepdev eclipse buildNatives
将Ghidra项目导入Eclipse:
- File -> Import...
- General | Existing Projects into Workspace
- 选择根目录为你下载或克隆的ghidra源代码仓库
- 勾选Search for nested projects
- 点击Finish
当Eclipse完成项目构建后,可以使用提供的Ghidra Eclipse 运行配置来启动和调试Ghidra。
有关开发Ghidra的更详细信息,请阅读开发者指南。
贡献
如果你希望将错误修复、改进和新功能贡献回Ghidra,请查看我们的贡献者指南,了解如何参与这个开源项目。