首页 > 代码库 > 缓冲区溢出基础知识
缓冲区溢出基础知识
缓冲区理论学习
PE文件(进程)装入内存:
PE文件(进程)在内存中按照功能大致划分4个部分
(1)
代码区(程序段) .text 主要存储被装入执行的二进制代码,ALU会到这个取指令并执行,这个段通常是只读,对它的写操作是非法的。
(2)
数据区 .data 主要是存储的全局变量,主要存储静态数据。
(3)
堆区 程序在堆区可以动态的请求分配一定大小的内存,并在用完后归还给堆区,动态分配和回收是堆区的主要特点,主要存储动态数据。
(4)
栈区 用于动态的存储函数之间的调用关系,以保证被调用函数在返回时恢复到母函数中继续执行
缓冲区:缓冲区是程序运行时内存中的一个连续的块,随着程序动态分配变量而出现,用来保存数据。
缓冲区溢出:缓冲区溢出也就是堆栈溢出。C语言不检查缓冲区的边界,在某些情况下,如果用户输入的数据长度超过应用程序给定的缓冲区,就会覆盖其他数据区。一个程序在内存中通常分为程序段,数据端和堆栈三部分。程序段里放着程序的机器码和只读数据,这个段通常是只读,对它的写操作是非法的。数据段放的是程序中的静态数据。动态数据则通过堆栈来存放。缓冲区溢出是利用堆栈段的溢出的。一般情况下,覆盖其他数据区的数据是没有意义的,最多造成应用程序错误。但是如果是黑客精心构造的数据,用来覆盖堆栈来让程序执行黑客的攻击代码。
http://bbs.pediy.com/showthread.php?t=85449
缓冲区溢出基础知识
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。