逆向工程框架——Ghidra的简单使用

背景

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

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

GitHub地址:

https://github.com/NationalSecurityAgency/ghidra.git

前置环境

宣称可以在以下三个环境运行(暂时支持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)

使用

创建项目

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的代码

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

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

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

总结

试了下,发现几点

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

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

参考链接