背景
昨天,在刚刚举行的RSA大会上,NSA发布了一款功能强大、免费开源的逆向分析工具:Ghidra。这个反汇编工具和我们常用的IDA类似,但是它是基于JAVA开发的。它是一款适用于Windows、Mac和Linux的跨平台反汇编工具。用户还可以使用Java或Python开发自己的Ghidra插件或脚本。维基解密于 2017 年首次曝光 Vault 7 中的 Ghidra。该信息来自中央情报局 (CIA) 的内部文件。过去几年,Ghidra 一直被用于 NSA 相关的网络安全任务。
360威胁情报中心立即对该工具进行了详细分析解压文件软件jar,整理了该工具的相关文档、具体安装使用方法以及该软件的趣闻轶事,帮助您进一步了解这款强大而神秘的安全工具。
Ghidra下载地址
您可以从 Ghidra 的项目主页或 GitHub 下载:
一些官方说明编译
360威胁情报中心整理了Ghidra官方文档,一一介绍了一些必要的安装注意事项、文件目录介绍、使用方法、相关插件的使用等,方便读者对比安装和使用。
支持平台
Windows 7/Windows 10(64 位)
Linux(64位,最好是CentOS 7)
macOS (10.8.3)
安装条件 硬件条件:4GB内存; 1GB硬盘空间软件条件:Java 11+
安装方法
使用解压工具将下载的压缩包(7-zip、WinZIP、WinRAR)解压并使用。
安装注意事项
Ghidra解压压缩包即可直接使用。这样做的好处是不需要修改各种系统配置,比如Windows下的注册表,很容易删除。缺点是不能直接在桌面或开始菜单上设置快捷方式。
特定驱动器号(例如 C:\)需要管理员权限。
Ghidra 会使用系统标准的 TEMP 目录来存储相关数据,用户也可以通过修改 support/launch.properties 来进行修改。
Java环境注意事项
解压JDK
打开系统环境变量设置选项
添加到路径
\垃圾桶
1.解压JDK
2.编辑~/.bahsrc
vi ~/.bashrc
3.导出路径=
/bin:$路径
4.保存
当然,用户可能需要使用特定版本的java,可以通过support/launch.properties中的JAVA_HOME_OVERRIDE进行配置。但是,如果版本不满足 Ghidra 的需求,Ghidra 将无法运行。
运行 GhidraGUI 模式
切换到 GhidraInstallDir 目录并运行 GhidraRun.bat (Windows) 或 GhidraRun (linus 或 macOS) 以 GUI 模式启动 Ghidra:
启动界面如下:
Ghidra 服务器
Ghidra 支持多人协作来完成逆向工程项目。各种研究人员可以在自己的设备上执行相关的逆向工程任务,并将修改提交到公共存储库。相关配置详见Ghidra Server。
命令行模式
与传统的GUI模式不同,用户可以通过命令行模式进行批量反编译工作。
独立JAR包模式
Ghidra 允许将部分文件打包为 JAR 包并单独运行,这样可以更方便地通过命令行方式启动解压文件软件jar,也可以作为单独的 Java 逆向工程库使用。用户可以通过 /support/buildGhidraJar 创建单独的 Ghidra.jar 文件并使用它。
扩张
扩展是 Ghidra 的可选组件,可以执行以下操作:
它默认附加了以下扩展,可以在 /Extensions 中找到:
插件注意
可以通过前端GUI执行安装和卸载。
l 文件->安装扩展
l 选择需要安装/卸载的扩展程序
l 重启生效
需要对 GhidraInstallDir 的写访问权限
您还可以将扩展直接解压缩到 /Ghidra/Extensions,而不使用 GUI 前端目录。
开发相关插件
用户可以通过自定义 Ghidra 脚本、插件和分析器扩展其功能。 Ghidra 通过提供名为 GhidraDev 的自定义 Eclipse 插件来支持 Eclipse 中的开发,该插件可以在 /Extensions/Eclipse 目录中找到。
具体使用流程项目创建
通过内置BAT脚本启动GUI模式:
输入后会有Tip提示,如下图:
Ghidra 由项目管理。用户需要先创建一个项目:
输入项目名称:
项目创建完成后,会生成一个特定的目录。注意,删除项目文件时,似乎无法通过GUI直接删除,需要手动删除:
创建工程后,可以导入需要反编译的文件:
如下所示,我们反编译并测试了calc.exe计算器程序:
开始反编译,速度还是比IDA慢很多:
完成后会在项目文件下创建对应的项目,双击进入:
输入后会提示是否进行分析:
点击确认后,可以控制相应的分析选项:
开始分析后,右下角会显示相关进度条:
目前,Ghidra 无法自动下载符号。需要设置PDB相关配置:
分析完成后,整体界面如下,具有浓郁的JAVA风格:
由于它是基于项目的,因此可以在 Ghidra 中同时打开多个反编译项目。只需要直接将文件导入到项目中即可:
主要功能介绍
360威胁情报中心整理了Ghidra反汇编界面中一些常用且有用的功能选项并介绍:
该菜单下有一些主要的操作选项:
该菜单下是其主要支持的功能窗口,类似于IDA中的view->opensubview
Python函数提供了与IDAPython类似的功能。可以通过help()查看对应的函数说明或者直接按F1:
脚本管理菜单下有大量的JAVA扩展脚本。这是我认为迄今为止最能带来惊喜的一个地方:
这些脚本选择后可以直接运行。以下是字符串搜索函数:
由于是基于项目的,所以支持同一个项目中反编译后的项目的比较:
具体选项如下:
不过目前的效果似乎一般:
常用快捷键
Ghidra 还支持快捷键。 360威胁情报中心整理了Ghidra中一些常用且有用的快捷键来介绍:
与IDA一致,直接双击即可进入后续地址功能:
该快捷键用于搜索,类似于IDA中的alt+t
效果如下,速度还是比IDA慢很多:
此快捷键启用书签功能:
相当于IDA中的F5,显示反编译代码:
类似于IDA中的Ctrl+X: