写在前面

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

你如果是从中间插过来看的,请仔细阅读 跟羽夏学 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. 揭开Vue异步组件的神秘面纱

    简介 在大型应用里,有些组件可能一开始并不显示,只有在特定条件下才会渲染,那么这种情况下该组件的资源其实不需要一开始就加载,完全可以在需要的时候再去请求,这也可以减少页面首次加载的资源体积,要在Vue ...

  2. Nacos开机自启

    1.添加nacos.service文件 vi /lib/systemd/system/nacos.service 2.将以下内容写到nacos.service文件中 ps:我的nacos路径是/usr ...

  3. NC14683 储物点的距离

    NC14683 储物点的距离 题目 题目描述 一个数轴,每一个储物点会有一些东西,同时它们之间存在距离. 每次给个区间 \([l,r]\) ,查询把这个区间内所有储物点的东西运到另外一个储物点的代价是 ...

  4. meet in the middle 复习笔记

    前言 若干年前看过现在又忘了.这么简单都忘 所以今天来重新复习一下. 正题 考虑这样的问题: 给定 \(n\) 个物品的价格,你有 \(m\) 块钱,每件物品限买一次,求买东西的方案数. \(n\le ...

  5. 07 MySQL_事务

    事务 事务( transaction) 是数据库中执行同一业务多条SQL语句 工作单元,事务可以保证多条SQL语句全部执行成功或全部执行失败 和事务相关的SQL语句: 验证事务: 1. 创建表: cr ...

  6. expect交互学习笔记

    expect主要应用于自动化交互式操作的场景;比如服务器过多,密码也不尽相同的情况下,需要便捷的登陆服务器,而无需输入密码的情况,亦或者便捷登陆mysql/ftp等需要交互的场景:也可以在服务器之间通 ...

  7. md文档使用小技巧

    简介 在日常写readme文档中,可能会遇到一些小问题,此处记录一下md文档编写过程中的一些小技巧. 插入图片 在md文档中插入图片,目前有三种方式,本地导入.网络导入.base64导入. 本地导入 ...

  8. python自带gui插件tkinter使用小结

    1.tkinter简介 Tkinter(即 tk interface,简称"Tk")本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GU ...

  9. ML.NET相关资源整理

      在人工智能领域,无论是机器学习,还是深度学习等,Python编程语言都是绝对的主流,尽管底层都是C++实现的,似乎人工智能和C#/F#编程语言没什么关系.在人工智能的工程实现,通常都是将Pytho ...

  10. Auto.js 特殊定位控件方法 不能在ui线程执行阻塞操作,请使用setTimeout代替

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! Auto.js 特殊定位控件方法 操作环 ...