发布信息

NSA发布免费开源逆向分析工具Ghidra:跨平台反汇编工具详解

作者:软荐小编      2025-01-02 16:03:37     91

背景

昨天,在刚刚举行的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

打开系统环境变量设置选项

添加到路径

\垃圾桶

解压文件软件jar_jar解压命令_解压软件文件关联是什么意思

解压软件文件关联是什么意思_jar解压命令_解压文件软件jar

解压文件软件jar_解压软件文件关联是什么意思_jar解压命令

1.解压JDK

2.编辑~/.bahsrc

vi ~/.bashrc

3.导出路径=

/bin:$路径

4.保存

当然,用户可能需要使用特定版本的java,可以通过support/launch.properties中的JAVA_HOME_OVERRIDE进行配置。但是,如果版本不满足 Ghidra 的需求,Ghidra 将无法运行。

jar解压命令_解压文件软件jar_解压软件文件关联是什么意思

运行 GhidraGUI 模式

切换到 GhidraInstallDir 目录并运行 GhidraRun.bat (Windows) 或 GhidraRun (linus 或 macOS) 以 GUI 模式启动 Ghidra:

解压软件文件关联是什么意思_jar解压命令_解压文件软件jar

启动界面如下:

解压文件软件jar_jar解压命令_解压软件文件关联是什么意思

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模式:

解压软件文件关联是什么意思_jar解压命令_解压文件软件jar

输入后会有Tip提示,如下图:

解压软件文件关联是什么意思_解压文件软件jar_jar解压命令

Ghidra 由项目管理。用户需要先创建一个项目:

解压文件软件jar_jar解压命令_解压软件文件关联是什么意思

输入项目名称:

解压文件软件jar_解压软件文件关联是什么意思_jar解压命令

项目创建完成后,会生成一个特定的目录。注意,删除项目文件时,似乎无法通过GUI直接删除,需要手动删除:

解压文件软件jar_解压软件文件关联是什么意思_jar解压命令

创建工程后,可以导入需要反编译的文件:

jar解压命令_解压文件软件jar_解压软件文件关联是什么意思

如下所示,我们反编译并测试了calc.exe计算器程序:

解压软件文件关联是什么意思_jar解压命令_解压文件软件jar

开始反编译,速度还是比IDA慢很多:

解压文件软件jar_jar解压命令_解压软件文件关联是什么意思

完成后会在项目文件下创建对应的项目,双击进入:

解压文件软件jar_解压软件文件关联是什么意思_jar解压命令

输入后会提示是否进行分析:

jar解压命令_解压文件软件jar_解压软件文件关联是什么意思

点击确认后,可以控制相应的分析选项:

解压文件软件jar_解压软件文件关联是什么意思_jar解压命令

开始分析后,右下角会显示相关进度条:

目前,Ghidra 无法自动下载符号。需要设置PDB相关配置:

jar解压命令_解压软件文件关联是什么意思_解压文件软件jar

分析完成后,整体界面如下,具有浓郁的JAVA风格:

解压文件软件jar_解压软件文件关联是什么意思_jar解压命令

由于它是基于项目的,因此可以在 Ghidra 中同时打开多个反编译项目。只需要直接将文件导入到项目中即可:

主要功能介绍

360威胁情报中心整理了Ghidra反汇编界面中一些常用且有用的功能选项并介绍:

该菜单下有一些主要的操作选项:

解压软件文件关联是什么意思_解压文件软件jar_jar解压命令

该菜单下是其主要支持的功能窗口,类似于IDA中的view->opensubview

jar解压命令_解压文件软件jar_解压软件文件关联是什么意思

Python函数提供了与IDAPython类似的功能。可以通过help()查看对应的函数说明或者直接按F1:

解压软件文件关联是什么意思_jar解压命令_解压文件软件jar

脚本管理菜单下有大量的JAVA扩展脚本。这是我认为迄今为止最能带来惊喜的一个地方:

jar解压命令_解压文件软件jar_解压软件文件关联是什么意思

这些脚本选择后可以直接运行。以下是字符串搜索函数:

解压文件软件jar_jar解压命令_解压软件文件关联是什么意思

由于是基于项目的,所以支持同一个项目中反编译后的项目的比较:

jar解压命令_解压文件软件jar_解压软件文件关联是什么意思

具体选项如下:

jar解压命令_解压软件文件关联是什么意思_解压文件软件jar

不过目前的效果似乎一般:

解压软件文件关联是什么意思_解压文件软件jar_jar解压命令

常用快捷键

Ghidra 还支持快捷键。 360威胁情报中心整理了Ghidra中一些常用且有用的快捷键来介绍:

与IDA一致,直接双击即可进入后续地址功能:

解压软件文件关联是什么意思_解压文件软件jar_jar解压命令

该快捷键用于搜索,类似于IDA中的alt+t

解压文件软件jar_解压软件文件关联是什么意思_jar解压命令

效果如下,速度还是比IDA慢很多:

解压文件软件jar_解压软件文件关联是什么意思_jar解压命令

此快捷键启用书签功能:

解压软件文件关联是什么意思_jar解压命令_解压文件软件jar

相当于IDA中的F5,显示反编译代码:

jar解压命令_解压文件软件jar_解压软件文件关联是什么意思

类似于IDA中的Ctrl+X:

解压软件文件关联是什么意思_jar解压命令_解压文件软件jar

相关内容 查看全部