0

我遇到了 GDB 的问题。我现在正在研究缓冲区溢出,我需要运行命令$Info reg来查找有关的信息ebp,但我没有从其中任何一个中得到任何结果。我对它们中的每一个都进行了尝试,但只能奏效。eipespInfo reg $nameebp

基本上是这样的:

(gdb) i r
rax            0x7fffffffe180   140737488347520

rbx            0x0  0

rcx            0x7fffffffe570   140737488348528

rdx            0x7fffffffe1a6   140737488347558

rsi            0x6  6

...

...

...



es             0x0  0

fs             0x0  0

---Type <return> to continue, or q <return> to quit---+

gs             0x0  0

(gdb) info reg $ebp

ebp            0x41414141   1094795585

(gdb) info reg $eip

Invalid register `eip'

如何获取这些内存部分的值?

4

1 回答 1

2

eipamd64 arch中没有调用reg

让我展示一下bp//是什么ebprbp一个数据寄存器在 amd64 架构上包含 64 位:

64 ---------------------------- 32 ---------- 16 ---- 8 ---- 0
| <--------------------------- rbp ------------------------> |
                                 | <--------- ebp ---------> |
                                               | <--- bp --> |

因此您可以通过不同的名称访问相应的位。

但是您总是rip作为一个整体访问,因为没有理由访问 的低位instruction pointer,因此amd64 arch 中没有eip/寄存器ip

于 2012-08-31T05:56:14.573 回答