摘要: 由于C/C++语言本身没有数组越界检查机制,当向缓冲区里写入的数据超过了为其分配的大小时,就会发生缓冲区溢出。攻击者可以利用缓冲区溢出来窜改进程运行时栈,从而改变程序的正常流向。在分析缓冲区溢出攻击的原理之前,我们先来复习一下进程在内存中的结构。进程在内存中的组织形式 Text段主要包含程序代码(一系列可执行的指令),另外还有一些只读的数据。通常操作系统标记该段为只读段,如果有进程试图修改该段,会引发段错误。Data段包括已初始化和未初始化的全局变量,静态变量也放于此处。该段的大小是在编译时期计算的。紧接着Data段的一块内存是由堆和栈共享的区域。堆向下(高地址)增长,栈向上(低地址)增长。堆 阅读全文
posted @ 2010-12-23 01:27 shilcare 阅读(6676) 评论(0) 推荐(0)