写在前面

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

你如果是从中间插过来看的,请仔细阅读 跟羽夏学 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 NameGhidra用来指代项目中导入的二进制文件的名称,包括在项目窗口中显示的名称。它默认为导入文件的名称,但可以更改为更具描述性的名称,不要被它的意思所迷惑。

  点击确定,待Ghidra简单分析后,就会获得该文件的相关信息:

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

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

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

开始分析

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

  可以看到Running Tools多了一个龙头,也就是所谓的CodeBrowser对话框。

  首次,Ghidra会询问我们是否分析,直接Yes

  然后又弹出一个窗体,这个是用来选择要分析的条目,如果可执行文件过大,就需要挑几个最关心的部分,直接默认即可。

  由于软件特别小,很快就能分析完了,如下图所示:

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

下一篇

  跟羽夏学 Ghidra ——窗口

跟羽夏学 Ghidra ——初识的更多相关文章

  1. 跟羽夏学 Ghidra ——工具

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  2. 跟羽夏学 Ghidra ——窗口

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  3. 跟羽夏学 Ghidra ——数据

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  4. 跟羽夏学 Ghidra ——引用

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  5. 跟羽夏学 Ghidra ——导航

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  6. 跟羽夏学 Ghidra ——调试

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  7. 羽夏看Win系统内核—— APC 篇

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  8. 羽夏看Win系统内核——消息机制篇

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  9. (二)羽夏看C语言——容器

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

随机推荐

  1. 【python基础】第05回 数据类型,交互,格式化输出,运算符

    上节内容回顾 1.python的注释 # 单行注释 pycharm快捷键:ctrl+? '''多行注释''' """多行注释""" 2.py ...

  2. SpringBoot 整合文件上传 elment Ui 上传组件

    SpringBoot 整合文件上传 elment Ui 上传组件 本文章记录 自己学习使用 侵权必删! 前端代码 博主最近在学 elment Ui 所以 前端使用 elmentUi 的 upload ...

  3. 小样本利器2.文本对抗+半监督 FGSM & VAT & FGM代码实现

    小样本利器2.文本对抗+半监督 FGSM & VAT & FGM代码实现 上一章我们聊了聊通过一致性正则的半监督方案,使用大量的未标注样本来提升小样本模型的泛化能力.这一章我们结合FG ...

  4. Java去除字符串中 除数字和逗号以外的符号

    例: public static void main(String[] args) { // 去除字符串中 除数字和逗号以外的符号 String str = "_1066,_1068,_10 ...

  5. Git下载(快速快速快速下载!!)

    在安装Git环境的时候,需要下载Git的安装包,但是官网的下载网速实在是太慢的(几十M的安装包,下载速度只有几十K) (所以可以在镜像中下载,速度超快) Git镜像下载链接-------------- ...

  6. Windows下maven配置环境变量

    右键 "计算机",选择 "属性",之后点击 "高级系统设置",点击"环境变量",来设置环境变量,有以下系统变量需要配置: ...

  7. NC50528 滑动窗口

    NC50528 滑动窗口 题目 题目描述 给一个长度为N的数组,一个长为K的滑动窗体从最左端移至最右端,你只能看到窗口中的K个数,每次窗体向右移动一位,如下图: 你的任务是找出窗体在各个位置时的最大值 ...

  8. 如何参与开源项目 - 细说 GitHub 上的 PR 全过程

    目录 一.概述 二.为什么要参与开源项目 三.为什么我想介绍如何 PR 四.我想参与开源项目,怎么开始? 4.1.寻找一个合适的开源项目 4.2.寻找贡献点 五.我要提交 PR,怎么上手? 5.1.第 ...

  9. 选择结构-穿透的switch语句和循环结构-循环概述

     case的穿透性 在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运 行,直到遇到break,或者整体switch结束 publi ...

  10. OneOS家族,LITE版小兄弟诞生了!

    号外,号外!OneOS-Lite诞生啦!前有大哥OneOS,以及一众优秀的RTOS,正所谓珠玉在前,我很难啊.但我可不能怂,大哥叫小O,我就叫小L,站在大哥的肩上,小小L也有发光发热的机会. 小L代码 ...