Ghidra简介
Ghidra是RSA Conference 2019上NSA发布的一个开源的逆向分析工具,可以分析ELF、APK、JAR等文件。优点是免费、好上手,用于替代昂贵的IDA Pro工具。缺点是对较大的文件反编译速度比IDA Pro慢。该分析工具使用Java开发,跨平台能力强,可以在Windows、macOS和Linux系统上运行,界面使用相对友好。Ghidra内置了Jython解释器,因此可以使用Java或Python开发自己的Ghidra插件或者脚本。
下载与安装
硬件条件:4GB内存;1GB硬盘空间
软件条件:Java 11+
- 下载Ghidra
下载安装包后,本地解压,解压后不用进行复杂的配置,保障JDK-11以上版本就可以,解压后的安装目录如下
双击ghidraRun脚本后,Mac上出现无法运行提示,需要在系统设置-->隐私与安全性允许ghidraRun运行
启动后的界面,可以创建一个工作目录
使用方法
导入文件
通过File->ImportFile导入要反编译的ELF(so)文件
双击libxxx.so文件进入反编译界面,至此可以开始对ELF文件进行分析
常用功能介绍
对ELF文件逆向分析
-
查看ELF信息
-
查看Segment信息
- 函数反编译伪代码查看
右侧是类似IDA Pro F5功能的伪代码,点击对应函数名,或C(f)按键、或command+E快捷键可以查看伪代码
函数搜索及调用树和函数内调用函数
- 函数代码跳转分析
点击DisplayFunctionGraph,查看函数跳转汇编流程
- 脚本功能
点击快捷工具栏的脚本管理按钮可以看到有很多辅助分析的Java、py脚本:选择脚本可以直接运行
-
符号表查看与搜索
符号表引用查看与搜索
- 文件对比分析
可以对elf文件进行对比分析
-
字符串搜索
- 地址跳转
汇编信息界面按“G”会弹出下面输入框,输入地址可以跳转到对应地址
对Android APK逆向分析
导入一个APK文件,文件名为app-cn-noasan-inner-debug.apk。选择File > Import File >app-debug.apk,然后选择Batch来引入所有文件和目录,或者点击File > Batch Import也可以。然后将Depth Limit设置为一个较高的值(10以上),点击rescan来搜索类文件
对dex/lib库文件分析
查看对应汇编以及反编译的代码