GDB和Info Reg命令不成功。似乎无法找到ebp,eip和esp值

时间:2012-08-31 05:47:25

标签: linux gdb overflow buffer eip

我遇到了GDB的问题。我正在研究缓冲区溢出,我需要运行命令$Info reg来查找有关ebpeipesp的信息,但我没有得到任何结果。我试用了Info reg $name,但只有ebp才有效。

基本上就是这样:

(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'

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

1 个答案:

答案 0 :(得分:2)

amd64 arch

中没有名为eip的注册表

让我展示什么是bp / ebp / rbp,数据寄存器在amd64 arch上包含64位:

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

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

但您始终可以访问rip作为整个单词,因为没有理由访问instruction pointer的低位,因此,没有eip / {{1在amd64 arch中注册