[摘要](内存低址) 再看看下面的四条指令. 0x8048406 <vulFunc+6>: mov 0x8(%ebp),%eax ; 把ebp+8指向的内存单元(4字节)里 ; 的内容赋给eax...
(内存低址)
再看看下面的四条指令.
0x8048406 <vulFunc+6>: mov 0x8(%ebp),%eax ; 把ebp+8指向的内存单元(4字节)里
; 的内容赋给eax.
从上图看出vulFunc函数栈帧的ebp+8四字节内存单元里放的是指向"AAAAAAAA"字符串的起始地址.
0x8048409 <vulFunc+9>: push %eax ; eax的值入栈.
把指向"AAAAAAAA"字符串的起始地址入栈.
0x804840a <vulFunc+10>: lea 0xfffffff4(%ebp),%eax
哇! 好吓人呀! 这条指令是干什么的? 让我们慢慢来分析一下.
这条指令是把ebp+0xfffffff4做为地址值赋给eax.
但是ebp的值加上0xfffffff4指向那里呀, 这是我们要弄清楚的.
这里如果我们按正数来加, 那是不行的.
实际上这个十六进制的0xfffffff4所表示的是负数, 要知道它的值, 让我们来算一下.
F F F F F F F 4
+----+----+----+----+----+----+----+----+
关键词:编写自己的缓冲区溢出运用程序