缓冲区溢出基础知识

缓冲区理论学习
PE文件(进程)装入内存:
PE文件(进程)在内存中按照功能大致划分4个部分
(1)
代码区(程序段) .text 主要存储被装入执行的二进制代码,ALU会到这个取指令并执行,这个段通常是只读,对它的写操作是非法的。
(2)
数据区 .data 主要是存储的全局变量,主要存储静态数据。
(3)
堆区 程序在堆区可以动态的请求分配一定大小的内存,并在用完后归还给堆区,动态分配和回收是堆区的主要特点,主要存储动态数据。
(4)
栈区 用于动态的存储函数之间的调用关系,以保证被调用函数在返回时恢复到母函数中继续执行
缓冲区:缓冲区是程序运行时内存中的一个连续的块,随着程序动态分配变量而出现,用来保存数据。
缓冲区溢出:缓冲区溢出也就是堆栈溢出。C语言不检查缓冲区的边界,在某些情况下,如果用户输入的数据长度超过应用程序给定的缓冲区,就会覆盖其他数据区。一个程序在内存中通常分为程序段,数据端和堆栈三部分。程序段里放着程序的机器码和只读数据,这个段通常是只读,对它的写操作是非法的。数据段放的是程序中的静态数据。动态数据则通过堆栈来存放。缓冲区溢出是利用堆栈段的溢出的。一般情况下,覆盖其他数据区的数据是没有意义的,最多造成应用程序错误。但是如果是黑客精心构造的数据,用来覆盖堆栈来让程序执行黑客的攻击代码。

http://bbs.pediy.com/showthread.php?t=85449

转载于:https://www.cnblogs.com/exp-pekin/p/4170572.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值