日期:2014-05-16  浏览次数:20759 次

缓冲区溢出实例的一点困惑
#include <windows.h>
void function(char* str)
{
char buffer[256];
strcpy(buffer,str);
}
void main()
{
char large_string[256];
int i;
for(i=0;i<255;i++)
large_string[i] = 'A';
function(large_string);
}
这段代码是《黑客防线2009缓冲区溢出攻击与防范》溢出原理的例子,书中有一句话我始终没有想透,原话是:当执行strcpy函数时,程序将256字节的字符拷入到buffer中,但buffer仅能容乃16字节,buffer后的250字节的内容将被覆盖掉,我觉得256字节中16字节拷贝到buffer中,剩余240字节覆盖buffer后面的高地址字节,为什么书中说是250字节,是不是还是有哪里没理解到,请大家帮忙解惑,多谢了

------解决方案--------------------
应该是书中的笔误。