当前位置: 首页 > news >正文

汇编语言学习3---GDB调试

Break

尝试在_start设置断点
在这里插入图片描述
然后使用 run 或者 r 运行
在这里插入图片描述
可以看见我们在0x401000暂停,如果想要在其他地址添加断点可以使用,比如:

 b *0x40100a

Examine

如果我们想手动检查任何地址或寄存器,或检查其他任何内容,可以使用 x 命令,格式为 x/FMT ADDRESS

检查格式 FMT 可以有三个部分:

参数描述示例
Count要重复检查的次数2, 3, 10
Format结果呈现的格式x(十六进制),s(字符串),i(指令)
Size要检查的内存大小b(字节),h(半字),w(字),g(巨型,8字节)

比如,检查$rip寄存器

x/4ig $rip
  • 4:表示我们要查看的指令数,这里是 4 条。
  • i:表示我们想查看的内容是“指令”(instruction)。
  • g:表示查看的内存大小是“巨型”格式,通常是 8 字节或 64 位。

在这里插入图片描述

Step

使用 stepi (si) 命令逐条执行汇编指令

si

在这里插入图片描述
也可以执行多个指令,如果你想执行 2条指令

si 2

在这里插入图片描述
step 命令会继续执行直到当前函数结束,或者执行到下一行代码。
在这里插入图片描述

next

在这里插入图片描述

stepi (si):逐条执行汇编指令,每次执行一条指令。

step (s):继续执行直到当前函数结束,进入函数时会停在函数开始处。

next (n):执行当前行直到结束,但跳过函数调用。

Modify

修改寄存器和内存地址中的值,并观察这些修改如何影响程序的执行。
我们可以使用 set 命令来修改寄存器的值,或者直接使用 GEF 提供的 patch 命令来修改内存地址中的数据:

使用 patch 命令
gef➤  help patch

patch 命令允许我们在指定的地址写入指定的值,格式如下:

patch (qword|dword|word|byte) LOCATION VALUES
patch string LOCATION "double-escaped string"
  • 类型/大小:指定我们要修改的数据类型(如 qword, dword, word, byte)。
  • 位置:指定我们要修改的内存地址。
  • :指定要写入的值。

例如,如果我们想修改 .data 段(我们之前看到它的地址为 0x402000)中存储的字符串,可以使用 patch 命令,加上要修改 rdx 寄存器的值,将其设置为字符串的长度(0x9),可以使用 set 命令:

gef➤  break *0x401019       # 在地址 0x401019 设置断点
Breakpoint 1 at 0x401019
gef➤  r                    # 运行程序
gef➤  patch string 0x402000 "Evil!\\x0a"  # 修改字符串
gef➤  set $rdx=0x9         # 修改 rdx 寄存器的值为字符串长度 0x9
gef➤  c                    # 继续执行

在这里插入图片描述

http://www.dtcms.com/a/341401.html

相关文章:

  • 【StarRocks】TabletChecker逻辑
  • 尝试给每个客户端设置一个标签身份,以此来解决非独立同分布的情况?
  • BM25 vs TF-IDF:经典文本检索方法的对比
  • 门控循环单元(GRU, Gated Recurrent Unit)
  • 压缩--RAR、7-Zip工具使用
  • 【Python】新手入门:python面向对象编程的三大特性是什么?python继承、封装、多态的特性都有哪些?
  • Jmeter接口测试
  • 30. 技术专题-锁
  • K8S-Configmap资源
  • 双模式 RTMP H.265 播放器解析:从国内扩展到 Enhanced RTMP 标准的演进
  • 媒体发稿平台哪家好?媒体新闻发稿渠道有哪些值得推荐?
  • 【知识杂记】陀螺仪直接积分就能获得角度吗?
  • 【C++】C++的类型转换
  • 《P1967 [NOIP 2013 提高组] 货车运输》
  • 多线程 + 事务传播误用导致的问题
  • 【北京迅为】iTOP-4412精英版使用手册-第三十二章 网络通信-TCP套字节
  • 如何排查服务器DNS解析失败的问题
  • TypeScript中的枚举
  • UE5分享序列播放器的停止与设置播放范围
  • 8.20作业
  • [Mysql数据库] 用户管理选择题
  • IIS访问报错:HTTP 错误 500.19 - Internal Server Error
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(一)基本代码
  • python的校园顺路代送系统
  • Seaweed-APT:AI视频生成模型,单步生成2秒钟的1280x720 24fps视频
  • 46.安卓逆向2-补环境-使用unidbg(使用apk文件补环境)
  • 面试记录5 .net
  • 电商大数据的采集过程详解​【采集内容|采集渠道|采集步骤|注意事项】
  • 算法第34天|动态规划:打家劫舍Ⅰ、打家劫舍Ⅱ、打家劫舍Ⅲ
  • 为了更强大的空间智能,如何将2D图像转换成完整、具有真实尺度和外观的3D场景?