计算机系统安全(第2版)课件 24缓冲区溢出攻击.pptVIP

  • 3
  • 0
  • 约2.46千字
  • 约 23页
  • 2022-01-25 发布于湖南
  • 举报

计算机系统安全(第2版)课件 24缓冲区溢出攻击.ppt

堆栈 从物理上讲,堆栈是就是一段连续分配的内存空间 静态全局变量是位于数据段并且在程序开始运行的时候被加载 动态的局部变量 则分配在堆栈里面 从操作上来讲,堆栈是一个先入后出的队列,其生长方向与内存的生长方向正好相反 * 规定内存的生长方向为向上,则栈的生长方向为向下,压栈的操作push=ESP-4 ,出栈的操作是pop=ESP+4 在Win32系统中,ESP是堆栈指针寄存器,它指向当前堆栈储存区域的顶部。 EBP是基址寄存器,它指向当前堆栈储存区的底部。当要在堆栈中进行搜索时,常常需要它作用一个静态参考点。 除此之外,EIP是指令指针,它指向下一条将要被执行的指令。 * 在一次函数调用中,堆栈中将被依次压入:  参数,返回地址,EBP 如果函数有局部变量,接下来,就在堆栈中开辟相应的空间以构造变量 函数执行结束,这些局部变量的内容将被丢失。但是不被清除 在函数返回的时候,弹出EBP,恢复堆栈到函数调用的地址,弹出返回地址到EIP以继续执行程序 * /* function_call.c 考察堆栈在函数调用中的变化  */ void fun(int); int main(void) { …… fun(1); …… return 0; } void fun(int para) { char buffer_a[8]; char buffer_b[8]; …… } 动作   

文档评论(0)

1亿VIP精品文档

相关文档