写在前面
此系列是本人一个字一个字码出来的,包括示例和实验截图。本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正。 如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我。
你如果是从中间插过来看的,请仔细阅读 跟羽夏学 Ghidra ——简述 ,方便学习本教程。请认准 博客园 的 寂静的羽夏 ,目前仅在该平台发布。
目录结构
安装软件的第一眼,我们首先看一下它的软件目录结构:
docs
包含有关Ghidra
和如何使用它的支持文档,该目录包括两个子目录。首先,GhidraClass
子目录提供教学内容,帮助了解Ghidra
。其次,languages
子目录描述了Ghidra
的处理器规范语言SLEIGH
。
Extensions
包含有用的预构建扩展以及编写Ghidra
扩展的重要内容和信息。
GPL
构成Ghidra
框架一部分的一些组件不是由Ghidra
团队开发的,而是由GPL
下发布的其他代码组成。GPL
目录包含与此内容关联的文件,包括许可信息。
licenses
包含概述Ghidra
各种第三方组件的适当和合法使用的文件。
server
支持Ghidra
服务器的安装,这有助于协作SRE
。本系列教程不会涉及该相关内容。
support
作为Ghidra
各种功能的集合。此外,如果您想进一步自定义您的工作环境(例如,创建Ghidra
启动脚本的快捷方式),也可以在这里找到Ghidra
图标。
初识
当我们首次启动Ghidra
时,软件应该是这样滴:
Tip
是该软件的提示信息,以帮助使用者入门使用该软件。把它关掉,下面我们正式开始如何使用该软件。
Ghidra
不像IDA
,如果进行逆向操作,需要创建项目Project
:
创建项目
点击New Project
,下面开始新建项目:
默认非共享项目,下一步:
然后我们需要输入项目名字,这个你随意,我输入WingSummerReverse
,点击结束按钮,项目就创建好了:
榆次同时,在项目目录路径下,会创建一个项目名字+.rep
的文件夹:
添加文件
下面我们需要添加编译好的示例文件tutorial
,如下所示:
点击Import File
之后,我们选择文件,点击确定后会得到如下对话框:
我们可以得知,该文件是ELF
格式,对于该部分,我重点介绍一下:
Language
字段允许您指定反汇编过程中应使用的处理器模块。Ghidra
语言/编译器规范可以由处理器类型、大小端规范(LE
/BE
)、位值(16
/32
/64
)、处理器变量和编译器ID
(例如ARM:LE:32:v7:default
)组成。在大多数情况下,Ghidra
将根据从可执行文件头读取的信息选择适当的处理器,不需要我们进行更改。
Destination Folder
字段用于选择将显示新导入文件的项目文件夹。默认情况下显示*项目文件夹,但可以添加子文件夹来组织项目中导入的程序。
Program Name
是Ghidra
用来指代项目中导入的二进制文件的名称,包括在项目窗口中显示的名称。它默认为导入文件的名称,但可以更改为更具描述性的名称,不要被它的意思所迷惑。
点击确定,待Ghidra
简单分析后,就会获得该文件的相关信息:
如果你加载的文件是ShellCode
的纯二进制代码文件,你会碰到这种情况:
这就需要自行指定Language
(该文件由“羽云十六进制编辑器”的汇编器生成Intel
的32
位汇编保存的文件):
指定完,我们也可以指定基址等相关信息:
开始分析
下面我们将开始入门如何逆向了,我们双击要逆向的内容:
可以看到Running Tools
多了一个龙头,也就是所谓的CodeBrowser
对话框。
首次,Ghidra
会询问我们是否分析,直接Yes
:
然后又弹出一个窗体,这个是用来选择要分析的条目,如果可执行文件过大,就需要挑几个最关心的部分,直接默认即可。
由于软件特别小,很快就能分析完了,如下图所示:
从此,我们就踏入了使用Ghidra
逆向的第一步。在之后的博文,我们将逐步揭开Ghidra
的神秘面纱,熟悉并熟练使用它。下一篇将是十分重要的一部分,学会了它+训练,你将掌握了Ghidra
的使用,并具有能够分析的二进制基础能力。
下一篇
跟羽夏学 Ghidra ——窗口