

缓冲区是计算机存储中的一个连续块,保存了给定类型的数据。当进行长期动态存储分配更加管理不当初,就会发生问题。动态变量所必须的缓冲区,是在程序运行时才进行分配的。如果程序在动态分配的缓冲区中放在超长的数据缓冲区溢出攻击,它还会溢出。

打个比方,缓冲区溢出好比是将十磅的糖放进一个只能装五磅的容器里。一旦该容器放满了,余下的个别就溢出。程序设计者编写的程序代码,如果没有对目的区域即缓冲区做适度的检测,看他们是否够小缓冲区溢出攻击,能否完全放到新的内容,结果就也许导致缓冲区溢出。但是,如果缓冲区仅仅当作溢出,还不具备破坏性。当糖溢出时,柜台被挡住。当把糖去掉或用吸尘器吸走,就可以恢复柜台原本的面貌。与此不同的是,当缓冲区溢出时,过剩的信息覆盖的是计算机存储中曾经的内容,除非那些被覆盖的内容被储存或无法恢复,否则还会依然丢失。在丢失的信息里也许有被程序读取的子程序及其参数。这意味着程序不能得到足够的信息从子程序返回,以完成它的任务。如果入侵者用精心编写的侵入代码(一种恶意程序)使缓冲区溢出,然后令程序根据预设的方式处置缓冲区,并且执行预设的程序代码,此时的程序就完全被入侵者操纵。

1、划分信任区,禁止非信任区程序违法运行,保护信任区程序不被违规篡改问题表述如下:m个生产者生产出某类型 型的数据(记录、字符),并把它送入缓冲 区(缓冲区为n) ,k个消费者一次从缓冲 区中取走一个数据,系统应确保缓冲区 操作不出现重合,即在任一时刻只能有 一方(生产者或消费者)访问缓冲区 在丢失的信息里有才能被程序读取的子程序的列表信息,从后面“堆栈溢出攻击”的原理可以看出
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-131558-1.html
不喊话警告