在x86-64架構中,作業系統如何指定哪些頁面不能包含可執行程式碼?
Context:不執行位或NX位 (頁表條目的第63位) 允許作業系統指定哪些虛擬地址空間頁面可以包含可執行程式碼,哪些不能. 試圖從標記為"不執行"的頁面執行程式碼將導致記憶體訪問違規,類似於試圖寫入只讀頁面. 這應該使惡意程式碼更難通過"緩衝器超載"或"未檢查緩衝器"攻擊來控制系統. 自從80286以來,x86處理器上也提供了類似的功能,作為分段描述符的屬性;然而,這隻在一次整個分段上工作.
作業系統可以將虛擬地址空間的頁面標記為No-Execute或NX位,這是頁表條目中的第63位.