Fork me on GitHub
  2012年10月30日
摘要: 一,堆栈溢出 堆栈溢出就是不顾堆栈中分配的局部数据块大小(在栈中分配的局部数据块大小和局部变量的声明的大小有关),向该数据块写入了过多的数据,导致数据越界,结果覆盖了老的堆栈数据(包括函数的返回地址)。 或者解释为在长字符串中嵌入一段代码,并将过程的返回地址覆盖为这段代码的地址,这样当过程返回时,程序就转而开始执行这段自编的代码了.这东西很像病毒。基础知识 首先简单讲两个基础知识,一是函数调用时堆栈的变化;二是函数调用约定对函数调用及返回时堆栈变化的影响。 我们用高级语言编写程序的时候,函数调用是很常见的事情,但是我们却很少去观察函数调用时汇编究竟是如何实现的。其实,函数调用实现的过程很简单. 阅读全文
posted @ 2012-10-30 16:40 loopever 阅读(3827) 评论(0) 推荐(0) 编辑