爲什麼程序可以在被破壞的堆棧中繼續存活?

本文接上一篇文章 在x86架構,傳統上會使用EBP寄存器來建立堆棧幀。一個典型的棧幀如下圖所示:   上述彙編代碼,會建立如下圖所示的一個帶有兩個參數的__stdcall的函數棧幀:   函數的參數會基於EBP的正向偏移來進行訪問。在上面的例子中,第一個參數爲[ebp + 8],而本地變量則會基於EBP的負向偏移進行訪問,例如:local2的值爲[ebp – 8]。 現在假設:調用約定或函數聲明不
相關文章
相關標籤/搜索