2

跟羽夏学 Ghidra ——初识 - 寂静的羽夏

 1 year ago
source link: https://www.cnblogs.com/wingsummer/p/16685486.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

  此系列是本人一个字一个字码出来的,包括示例和实验截图。本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正。 如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我

你如果是从中间插过来看的,请仔细阅读 跟羽夏学 Ghidra ——简述 ,方便学习本教程。请认准 博客园寂静的羽夏 ,目前仅在该平台发布。

  安装软件的第一眼,我们首先看一下它的软件目录结构:

2520882-20220911203839575-1753103807.png

  包含有关Ghidra和如何使用它的支持文档,该目录包括两个子目录。首先,GhidraClass子目录提供教学内容,帮助了解Ghidra。其次,languages子目录描述了Ghidra的处理器规范语言SLEIGH

Extensions

  包含有用的预构建扩展以及编写Ghidra扩展的重要内容和信息。

  构成Ghidra框架一部分的一些组件不是由Ghidra团队开发的,而是由GPL下发布的其他代码组成。GPL目录包含与此内容关联的文件,包括许可信息。

licenses

  包含概述Ghidra各种第三方组件的适当和合法使用的文件。

server

  支持Ghidra服务器的安装,这有助于协作SRE。本系列教程不会涉及该相关内容。

support

  作为Ghidra各种功能的集合。此外,如果您想进一步自定义您的工作环境(例如,创建Ghidra启动脚本的快捷方式),也可以在这里找到Ghidra图标。

  当我们首次启动Ghidra时,软件应该是这样滴:

2520882-20220911204922865-1384692026.png

  Tip是该软件的提示信息,以帮助使用者入门使用该软件。把它关掉,下面我们正式开始如何使用该软件。
  Ghidra不像IDA,如果进行逆向操作,需要创建项目Project

2520882-20220911205631585-918911460.png

  点击New Project,下面开始新建项目:

2520882-20220911205852446-32413943.png

  默认非共享项目,下一步:

2520882-20220911205927573-2005823105.png

  然后我们需要输入项目名字,这个你随意,我输入WingSummerReverse,点击结束按钮,项目就创建好了:

2520882-20220911210125005-2091048706.png

  榆次同时,在项目目录路径下,会创建一个项目名字+.rep的文件夹:

2520882-20220911210233830-2009207139.png

  下面我们需要添加编译好的示例文件tutorial,如下所示:

2520882-20220911210549799-1479412171.png

  点击Import File之后,我们选择文件,点击确定后会得到如下对话框:

2520882-20220911210655133-670885222.png

  我们可以得知,该文件是ELF格式,对于该部分,我重点介绍一下:
  Language字段允许您指定反汇编过程中应使用的处理器模块。Ghidra语言/编译器规范可以由处理器类型、大小端规范(LE/BE)、位值(16/32/64)、处理器变量和编译器ID(例如ARM:LE:32:v7:default)组成。在大多数情况下,Ghidra将根据从可执行文件头读取的信息选择适当的处理器,不需要我们进行更改。
  Destination Folder字段用于选择将显示新导入文件的项目文件夹。默认情况下显示顶级项目文件夹,但可以添加子文件夹来组织项目中导入的程序。
  Program NameGhidra用来指代项目中导入的二进制文件的名称,包括在项目窗口中显示的名称。它默认为导入文件的名称,但可以更改为更具描述性的名称,不要被它的意思所迷惑。
  点击确定,待Ghidra简单分析后,就会获得该文件的相关信息:

2520882-20220911210738793-1385856110.png

  如果你加载的文件是ShellCode的纯二进制代码文件,你会碰到这种情况:

2520882-20220911212519920-600542458.png

  这就需要自行指定Language(该文件由“羽云十六进制编辑器”的汇编器生成Intel32位汇编保存的文件):

2520882-20220911212649652-262282756.png

  指定完,我们也可以指定基址等相关信息:

2520882-20220911212700095-273628256.png

  下面我们将开始入门如何逆向了,我们双击要逆向的内容:

2520882-20220911213056594-1382681416.png

  可以看到Running Tools多了一个龙头,也就是所谓的CodeBrowser对话框。
  首次,Ghidra会询问我们是否分析,直接Yes

2520882-20220911213038746-1470628084.png

  然后又弹出一个窗体,这个是用来选择要分析的条目,如果可执行文件过大,就需要挑几个最关心的部分,直接默认即可。
  由于软件特别小,很快就能分析完了,如下图所示:

2520882-20220911213434105-473181381.png

  从此,我们就踏入了使用Ghidra逆向的第一步。在之后的博文,我们将逐步揭开Ghidra的神秘面纱,熟悉并熟练使用它。下一篇将是十分重要的一部分,学会了它+训练,你将掌握了Ghidra的使用,并具有能够分析的二进制基础能力。

  跟羽夏学 Ghidra ——窗口


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK