我在讀一本入侵檢測技術的書,看到一個簡單的堆棧溢出示例,看不懂,請各位大神解釋一下是什麼意思
後話:人類為了抑制溢出攻擊,具有劃時代意義的成果有:DEP(數據執行保護)、ALSR(地址空間分布隨機化)等。簡單說DEP通過將指定虛擬內存頁面設置為“不可執行”,當然需要硬件支持,所有和Intel x86和amd x86_64兼容的CPU均支持,當CPU執行不可執行頁面的代碼時,就會出現虛擬內存違規訪問,從而程序崩潰退出,在部分Windows系統上,操作系統還會在右下角彈出一個氣泡“數據執行保護已終止XXX程序”。繞過DEP在沒有ALSR的系統上(比如XP)還是比較簡單的,溢出覆蓋返回值為VirtualProtect,修改指定內存頁面的訪問規則即可。ALSR簡單說就是將程序載入內存時不載入程序要求載入的地方,而是隨機載入(當然操作系統必須遍歷程序代碼,然後對導入的函數、數據、以及自己的函數調用進行“重定向”),這樣函數地址什麼的全是隨機的了,hacker溢出後就不知道往哪個地址調用VirtualProtect了,非常棘手,360為何對自己的XP甲盾如此有信心?因為XP甲盾通過驅動攔截可執行模塊載入並修改了基地址,相當於在XP上實現了ALSR,當然代價是使系統運行效率下降。