[摘要](内存低址) 我们看看接下来的指令做了些什么? 0x804842c <main>: push %ebp ; esp的值等于esp-4(因为ebp是32位); ; 把ebp的值放入esp所...
(内存低址)
我们看看接下来的指令做了些什么?
0x804842c <main>: push %ebp ; esp的值等于esp-4(因为ebp是32位);
; 把ebp的值放入esp所指的32位内存单
; 元(注: 这里保存栈底).
0x804842d <main+1>: mov %esp,%ebp ; ebp的值等于esp的值(注: 这里把原来
; 的栈顶做为新的栈底).
运行这两条指令, 然后看一下寄存器内容和栈的情况.
(gdb) si
0x804842d in main ()
(gdb) si
0x804842f in main ()
(gdb) i reg
eax 0x4010b3f8 1074836472
ecx 0x804842c 134513708
edx 0x4010d098 1074843800
ebx 0x4010c1ec 1074840044
esp 0xbffff6b8 -1073744200
ebp 0xbffff6b8 -1073744200
esi 0x4000ae60 1073786464
edi 0xbffff704 -1073744124
eip 0x804842f 134513711
eflags 0x346 838
cs 0x23 35
ss 0x2b 43
ds 0x2b 43
es 0x2b 43
fs 0x0 0
gs 0x0 0
cwd 0xffff037f -64641
swd 0xffff0000 -65536
twd 0xffffffff -1
fip 0x40034d70 1073958256
fcs 0x35d0023 56426531
fopo 0xbfffe400 -1073748992
fos 0xffff002b -65493
(gdb) x/9x $esp
0xbffff6b8: 0xbffff6d8 0x400349cb 0x00000002 0xbffff704
0xbffff6c8: 0xbffff710 0x40013868 0x00000002 0x08048350
0xbffff6d8: 0x00000000
此时进程的相关影像为:
(内存高址)
关键词:编写自己的缓冲区溢出运用程序