• 跟羽夏学 Ghidra ——调试


    写在前面

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

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

    前言

      在逆向的过程中,有时候静态分析无法下手。动态分析也可以验证静态分析的结果,这就是调试。调试是任何一名程序员所必须的技能,不会调试就是一名不合格的程序员。
      本篇不会介绍如何调试,只是介绍如何使用Ghidra所提供的调试器,对我们的分析文件进行调试,缩短适应时间。注意:不要对恶意软件等在真机上进行调试,可以通过在虚拟机远程调试,不过本篇不会详细涉及,只会一笔带过。

    简介

      下面我们学习如何进入调试器:

      打开Ghidra之后,点击上图中的瓢虫按钮,就会启用一个调试器,如下图所示:

      可以看到,菜单工具和CodeBrowser有很多是一样的,但是布局有些不同且多了只有调试特有的窗体。

    窗口介绍

      下面我们熟悉一下Ghidra调试器的特有窗口的作用。

    Debugger Targets

      该窗口包含建立与调试器的连接或启动新的调试会话:

      也就是说,当我们调试一个程序的时候,这里就会有一个项目。

    Objects

      该窗口显示正在调试的活动调试对象。从这里可以暂停、单步等调试相关的操作。

      可以说,这个窗口还是相当重要的呢。

    其他

      在底部内存区域窗口、堆栈窗口和标准控制台窗口以及监视窗口:

      通过这些窗口,我们可以分析内存布局,堆栈情况以及关注的地址的值的变化。
      在它的右侧,还有线程和时间窗口:

      在右侧,有三个十分重要的窗口——断点、模块和寄存器:

      至于其他窗口,感兴趣的话自行探索。

    开始调试

      下面开始学习如何调试。首先,和CodeBrowser一样,首次打开分析需要打开想要逆向的文件:

      选中turorial之后,点击确定。我们看到了工具栏有几个图标不再是禁用状态,Listing窗口也有了该程序的反汇编。
      看向工具栏,有一个瓢虫图标,那个就是用来调试的:

      这里面有好几种方式,具体差别我不算特别清楚,自行搜索。
      选中Debug tutorial in GDB locally IN-VM之后,就启用调试器,最终界面如下:

    小结

      本篇我们(博客园寂静的羽夏)介绍了Ghidra的调试器,了解了具体布局。我相信用过其他图形化调试器(比如KDB)的人都清楚如何使用了,要想熟练应用,还请多加练习。

    下一篇

      跟羽夏学 Ghidra ——脚本

  • 相关阅读:
    使用 Python 和 AI 将自己卡通化VToonify(教程含源码)
    入门案例:Hello World
    Unity中的AI算法和实现2-有限状态机FSM(上)
    GBase 8s数据库DB-Access全屏菜单界面介绍(1)
    常用字符串函数拓展
    spring框架限制接口是否要登录过才能访问
    半球体容器漏水体积微分问题
    idea安装
    【docker专栏6】详解docker容器状态转换管理命令
    如何解决缓存雪崩、击穿、穿透问题
  • 原文地址:https://www.cnblogs.com/wingsummer/p/16709970.html