使用gdb修改寄存器中的内容

再没有进程debug信息的情况下,不能直接使用变量名称修改变量的值,这时可以通过变量的寄存器,修改变量的值。



1、先将需要修改的函数反汇编,找到需要修改的变量的寄存器,例如 edx寄存器

2、gdb命令

gdb attach `ps -ef | grep proc | grep 进程名称 | awk '{print $2}'`
set height 0
handle SIG36 SIGUSR2 noprint nostop 
b *0x00e90d10   //反汇编需要修改寄存器的前一行
c
set $edx = 0x6   //修改寄存器的值
p $edx
bt
c


注意:
1、有些寄存器变量貌似不能修改,比如%rdi,使用gdb修改就会发生复位。
2、没有debug信息的函数中没有办法使用变量的方式赋值,比如set  age= 253,会提示找不到符号


补充:

第二种方式:
gdb attach `ps -ef | grep proc | grep bsu | awk '{print $2}'`
set height 0
handle SIG36 SIGUSR2 noprint nostop 
b *0x00e90d10
c
p $rsp+0x714

获取到寄存器的位置后,将该地址修改为0x6
set *0x7f962c1fa564 = 0x6
c

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明心见性者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值