初探VS2010缓冲区安全检查
(是原创,转自自己的人人,而该人人已经注销)。
今天做一个缓冲区溢出的实验,然后各种奇葩,各种与资料出入。然后OD跟进,观察汇编代码和堆栈数据,发现是VS2010的缓冲区安全检查在搞鬼。查阅网上资料,发现还是有点出入或者不全吧。这里与大家分享一下我的发现。
缓冲区溢出是很多漏洞的具体表现形式,而VS在这方面引入了一个GS编译选项。如果选择该选项,则在编译过程中vs会对相关的“可能有问题的”函数加入自己的代码来检查缓冲区溢出。而_security_cookie是它加入到问题函数堆栈中的一个双字(四字节)变量。根据网上的说法,这个变量是放在堆栈中存放“上个函数的EBP值”的元素上面(以“上”为内存地址小的方向),这样如果缓冲区溢出并且修改了函数返回地址ÿ