SEHOP的全稱是Structured Exception Handler Overwrite Protection(結構化異常處理覆蓋保護),SEH攻擊是指經過棧溢出或者其餘漏洞,使用精心構造的數據覆蓋結構化異常處理鏈表上面的某個節點或者多個節點,從而控制EIP(控制程序執行流程)。而SEHOP則是是微軟針對這種攻擊提出的一種安全防禦方案。安全
Server 2008 默認啓用, VISTA 和 WINDOWS 7 中 SEHOP默認是關閉的。函數
怎麼開啓 SEHOP :spa
1下載補丁 .net
2 修改註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel指針
設置 DisableExceptionChainValidation 項,值爲0 啓用SEHOPblog
SEHOP的核心是檢測程序棧中的全部SEH結構鏈表,特別是最後一個SEH結構,它擁有一個特殊的異常處理函數指針,指向的是一個位於NTDLL中的函數。
get
解決方法 總結:it
1 不去攻擊SEH 去攻擊函數返回地址 沒啓用GS 或者此函數沒有GS保護 / 虛函數 沒有攻擊SEH等 io
2 利用未啓用SEHOP模塊 例如 Armadilo加殼了 以後禁用了SEHOP下載
檢查SEH鏈中最後一個異常,那麼咱們僞造一個結構繞過 很是苛刻的條件:ASLR不能被啓用 由於僞造SEH須要用到 FinalExceptionHandler指向的地址