【发布时间】:2012-02-24 06:22:44
【问题描述】:
我在 gdb 方面没有丰富的经验,所以我不确定我所问的是否可行,但是否可以使用 gdb 实时编辑代码?
运行时(遇到断点后),disas 如下所示:
0x080487d8 <+9>: movl $0x80485e4,0x1c(%esp)
0x080487e0 <+17>: movl $0x8048640,0x20(%esp)
0x080487e8 <+25>: movl $0x804869c,0x24(%esp)
0x080487f0 <+33>: movl $0x8048719,0x28(%esp)
为了尝试更改其中一条指令中的地址,我这样做了:
set (*0x080487e1)=0x5b870408
但新的disas并没有像我预期的那样简单地更改地址,而是如下所示:
0x080487d8 <+9>: movl $0x80485e4,0x1c(%esp)
0x080487e0 <+17>: (bad)
0x080487e1 <+18>: or %al,(%edi,%eax,4)
0x080487e4 <+21>: pop %ebx
0x080487e5 <+22>: xchg %al,(%eax,%ecx,1)
0x080487e8 <+25>: movl $0x804869c,0x24(%esp)
0x080487f0 <+33>: movl $0x8048719,0x28(%esp)
所以我有 3 个问题:我正在尝试做的事情可能吗?如果是这样,我做错了吗?如果是这样,我做错了什么,我该如何解决?
【问题讨论】:
-
-1 让回答者猜测你的意图