
一、堆疊其實就是堆疊


二、堆疊溢位(stackoverflow)
【百度百科】堆疊溢位是由于C語言系列沒有內置檢查機制來確保復制到緩沖區的資料不得大于緩沖區的大小,因此當這個資料足夠大的時候,將會溢位緩沖區的范圍,
1. 水滿則溢,堆疊也有容量限制,當其超出限制,就會發生溢位,
2. 堆疊溢位可以理解為 "吃多了吐" ,佇列溢位就是 "吃多了拉" ,
三、造成的危害:
1. 堆疊溢位時會訪問不存在的RAM空間,造成代碼跑飛,此時無法獲取溢位時背景關系資料,也無法對后續的程式修改提供有用資訊,
2. 造成安全威脅,常見的攻擊型別有:修改函式的回傳地址,使其指向攻擊代碼,當函式呼叫結束時程式跳轉到攻擊者設定的地址,修改函式指標,長跳轉緩沖區來找到可溢位的緩沖區,
💬 堆疊溢位現象演示:
void test(int n) {
if(n < 10000) {
test(n + 1);
}
}
int main(void) {
test(1);
return 0;
}

參考資料:
. 百度百科[EB/OL]. []. https://baike.baidu.com/.
本章完,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/299387.html
標籤:其他
