写在前面

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

你如果是从中间插过来看的,请仔细阅读 跟羽夏学 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. 正在运行中的docker容器设置自动重启

    # demo : 你的容器名称 docker update –-restart=always demo

  2. 坐标PCB公司,想做实时数仓、推生产线看板,和Tapdata Cloud的偶遇来得就是这么凑巧

      Tapdata Cloud 是一款很有「前途」的产品.--Tapdata Cloud 用户 | 一线DBA@某PCB全球百强企业   从首次提出这一概念起,已经 10 年过去了,"工业互 ...

  3. 匿名对象作为方法的参数和返回值与Random概念和基本使用

    应用场景 1. 创建匿名对象直接调用方法,没有变量名. new Scanner(System.in).nextInt(); 2. 一旦调用两次方法,就是创建了两个对象,造成浪费,请看如下代码. new ...

  4. 【docker专栏2】CentOS操作系统安装DockerCE

    目录 一.前置要求 二.更新软件源信息 三.安装 Docker-CE 四.卸载Docker CE 为大家介绍在CentOS操作系统中安装docker的过程,linux其他发行版本安装docker方法可 ...

  5. LNMP架构及DISCUZ论坛部署

    1)(5分)服务器IP地址规划:client:12.0.0.12/24,网关服务器:ens36:12.0.0.1/24.ens33:172.16.10.1/24,Web1:172.16.10.10/2 ...

  6. Sharding-jdbc + Seata + Nacos整合

    前置条件 先了解Sharding-jdbc.Seata.Nacos这三样东西各自的作用以及单独使用时的配置. 整合代码已放在github,详细步骤章节请搭配此项目看,欢迎start 思路 如果已经做过 ...

  7. mysql8.0二进制安装遇到的问题

    公司新项目需要用CentOS8.0以上的系统和mysql8.0:于是在虚拟机上开始操作测试: 一实验环境 1.系统版本:CentOS8.32.数据库版本:mysql-8.0.233.数据库下载链接:h ...

  8. vue 数据更新了但视图没改变?试试 $set

    场景 编辑表格中某行数据时,需要把它赋值给对话框表单 this.form,如果直接用 = 赋值,会导致:表单的输入框内容无法二次编辑. 使用 Vue-dev-tool 的 Components 功能测 ...

  9. 关于KeyFile的破解,含注册机源代码

    程序来自于<加密与解密3>的第五章的PacMe.exe.书中并没有给出C语言实现的加密与解密代码,自己花了一些时间,把代码还原了,并且写了一个C语言的注册机. 加密原理:正如书中所说,此程 ...

  10. 解决前端向后端请求静态资源的问题(基于express框架)

    请求js,css,image资源: 前端 <script src='后端url/assets/js/xxx.js'>,<link href='后端url/assets/css/xxx ...