體驗緩衝區溢出

緩衝區溢出:往程序的緩衝區寫超出其長度的內容,也就是使用了申請之外的內存,會造成意想不到的結果。

來看一個很小的例子,這個例子來自這裏:http://zhan.renren.com/ilovecrack?from=template

代碼

#include<stdio.h>


void main()
{
	int i=0;
	int a[]={1,2,3,4,5,6,7,8,9,10};
	
	for(i=0;i<=10;i++)
	{
		a[i]=0;
		printf("Hello World!\n");
	}
} 

運行結果


分析

i=0~10,a[10]越界了,它越界到了哪裏呢?地址是從小往大增長的,沒錯,它越界到了i的地址空間。於是a[10]=0就是i=0,下次循環時,i=0,滿足循環條件,於是循環繼續進行着。每當i==10的時候,循環體裏的語句都將把i置爲0,於是循環將永無止境地進行下去。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章