美国国安局逆向工程框架——Ghidra的简单使用

背景

Ghidra是由NSA开发的软件逆向工程(SRE)框架。 它有助于分析恶意代码和病毒等恶意软件,并可以让网络安全专业人员更好地了解其网络和系统中的潜在漏洞。

美国国家安全局在今年3月举行的2019年RSA会议上首次公开演示时,将Ghidra作为开放源代码发布给公众。

链接:

https://ghidra-sre.org/

国内应该访问不到,怎么访问你懂的~

前置环境

宣称可以在以下三个环境运行(暂时支持64位的系统)

  • Microsoft Windows 7 or 10 (64-bit)
  • Linux (64-bit, CentOS 7 is preferred)
  • macOS (OS X) 10.8.3+ (Mountain Lion or later)

依赖:jdk11

下载地址(我下载的是当时最新的Java SE 11.0.2(LTS))

https://www.oracle.com/technetwork/java/javase/downloads/index.html

使用

创建项目

windows直接双击ghidraRun.bat打开(linux和mac可以执行ghidraRun脚本)

首先我们创建一个project(上图我是已经新建了一个叫做test的项目)

选择Non-Shared Project (另一个选择Shared Project是会在本地监听一个端口,方便分享)

接下来填好路径和项目名就可以了

反编译程序

导入要分析的二进制文件,都选择默认选项就行

之后你导入的二进制文件就会出现在project下面(我的项目名是test)

双击对应的文件即可开始分析该文件,下面以Reverse-org.exe为例,双击后选择分析

然后选择分析选项

那怎么找到main函数呢
我们可以找到左边的functions,找到entry(当然有些程序直接有main,或者_start等关键字)

通过Filter搜索可以更快一点,双击即可再右边看到entry代码

查看反编译,对逆向熟悉的就知道下面这个就是main函数了

双击即可跳到面函数处,反编译窗口下拉即可看到main的代码

看函数的流程图可以点这个

最后说说现在想到的一些快捷键

1、g 跳到对应的地址
2、f 创建函数
3、; 添加注释
4、L 重命名变量名,函数名

总结

试了下,发现几点
1、可以对mips架构的程序进行反编译,这个比ida要好(官方说支持各种处理器指令集,试了下SPARC架构也可以,真牛逼!!!)
2、反编译的c++代码好像更加简洁
3、支持多平台,这个不错
4、更重要的,开源,免费

缺点:不熟悉操作,暂时感觉没有ida方便,没发现有调试功能

打赏专区