數據執行保護(DEP)

數據執行保護技術(Data Execution Prevention,以下簡稱 DEP)是 WinXP SP2和2003 sp1新增的一項功能。DEP 簡單地說可以看作作業系統底層的安全防護機制,本身不具備對病毒檢測的功能。但如果有利用漏洞溢出包括本地溢出的病毒發作時,DEP 可以進行防護作用。

概述:

數據執行保護技術(Data Execution Prevention,以下簡稱 DEP)是 winxp sp2 和 2003 sp1 新增的一項功能。DEP 簡單地說可以看作作業系統底層的安全防護機制,本身不具備對病毒檢測的功能。但如果有利用漏洞溢出包括本地溢出的病毒發作時,DEP 可以進行防護作用。
在 WinXP SP2 和 2003 sp1 的系統上,在控制臺里打開“系統”屬性,在【高級】選項卡下的“性能:視覺效果、處理器計畫、記憶體使用和虛擬記憶體”裡面點擊【設定】,接著在“性能選項”中選擇【數據執行保護】選項卡,即可設定 DEP 功能。
DEP 技術也需要硬體設備的支持,如果要完整地支持 DEP 必須擁有支持 DEP 技術的 CPU,目前只有 Intel 的“安騰”系列、Pentium 4 J 支持,以及 AMD 的 Athlon 64 系列、Opteron 支持。硬體不支持 DEP 的計算機使用 WinXP SP2 或 2003 sp1 只能用軟體方式模擬 DEP 的部分功能。
數據執行保護(DEP)是MicrosoftWindowsXPServicePack2(SP2)支持的一種處理器功能,它禁止在標記為數據存儲的記憶體區域中執行代碼。此功能也稱作“不執行”和“執行保護”。當嘗試運行標記的數據頁中的代碼時,就會立即發生異常並禁止執行代碼。這可以防止攻擊者使用代碼致使數據緩衝區溢出,然後執行該代碼。
數據執行保護(DEP)有助於防止病毒和其他安全威脅造成破壞,它們的攻擊方法是從只有Windows和其他程式可以使用的記憶體位置執行惡意代碼。此類威脅使用以下方法造成破壞:它接管某個程式正在使用的一個或多個記憶體位置,然後進行傳播並破壞其他程式、檔案甚至您的電子郵件聯繫方式。
與防火牆或防病毒程式不同,DEP不能阻止在您的計算機上安裝有害程式。但是,它會監視您的程式,以確定它們是否安全地使用系統記憶體。為此,DEP軟體會單獨或與兼容的微處理器一起將某些記憶體位置標記為“不可執行”。如果某個程式嘗試從受保護的位置運行代碼,DEP將關閉該程式並通知您。即使該代碼不是惡意代碼,也會執行此操作。

分類(版本):

64位Windows版本上的DEP
64位處理器上的64位Windows版本可以在64位模式下運行程式。無論處理器的結構如何,64位Windows版本的核心模式DEP均適用於堆疊、頁面緩衝池和會話池。
默認情況下,在WindowsXPSP2中啟用DEP,並且無法將其禁用。64位應用程式將無法從堆疊或默認進程堆中運行。對於需要分配可執行記憶體的應用程式,可使用帶有某個PAGE_EXECUTE*記憶體屬性的VirtualAlloc()來運行。
32位Windows版本上的DEP
用戶模式DEP
在不久的將來,許多運行Windows和Windows兼容程式的計算機都將使用運行32位Windows版本的32位處理器。但是,AMDOpteron和Athlon-64等新的處理器同時支持32位和64位操作模式。(32位操作模式是舊模式;而64位操作模式是本機模式。)
同時支持32位和64位操作模式的新處理器可以在32位作業系統和32位應用程式環境中運行,在啟用物理地址擴展(PAE)模式後,它們還可以使用DEP。
我們將探討分別為每個32位應用程式禁用或啟用DEP的方法。默認情況下,為64位應用程式啟用DEP。DEP異常將導致Windows系統上出現狀態代碼STATUS_ACCESS_VIOLATION(0xc0000005)。在大多數進程中,這是一個未經處理的異常,並導致進程終止。
核心模式DEP
對於用戶模式和核心模式,DEP的工作原理相同。在核心模式下,不能分別為每個驅動程式啟用或禁用記憶體區域DEP。默認情況下,在32位Windows版本上,DEP僅適用於堆疊。在64位Windows版本上,DEP適用於堆疊、頁面緩衝池和會話池。核心模式下的訪問衝突將導致出現Bugcheck0x000000FC:ATTEMPTED_EXECUTE_OF_NONEXECUTE_MEMORY。

兼容性問題

應用程式和驅動程式都可能會發生DEP兼容性問題。
有些應用程式行為可能與DEP不兼容。執行動態代碼生成(如實時代碼生成)的應用程式以及不使用“執行”許可權明確標記生成的代碼的應用程式與DEP之間可能存在兼容性問題。
試圖違反DEP的應用程式將會出現異常,並顯示狀態代碼STATUS_ACCESS_VIOLATION(0xc0000005)。如果應用程式需要可執行記憶體,則必須在相應的記憶體中明確設定此屬性,方法是在Virtual*記憶體分配函式的記憶體保護參數中指定PAGE_EXECUTE、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE或PAGE_EXECUTE_WRITECOPY。
關閉數據執行保護:
使用記事本打開c:\boot.ini檔案。如果有隻讀屬性,需要先將唯讀屬性去掉。
可以找到multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /noexecute=optin /fastdetect
把/noexecute=optin改為/execute 即可。即改為:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /execute /fastdetect
/noexecute=optin 這是默認開關。啟用 DEP。
/execute - 禁用 DEP。
/noexecute參數的取值可以是AlwaysOn、AlwaysOff、OptIn 、OptOut中的任一個。當你啟用DEP(系統數據執行保護)的時候,/noexecute=optin;關閉DEP,/noexecute=optout
/noexecute=AlwaysOn時,便將整個系統置於 DEP 保護範圍以內。在這種狀態下,可能很多程式都不能運行,而且報錯的提示還不一樣。
/noexecute=AlwaysOff時,相當於關閉了DEP和EVP功能,凡是被其阻止的程式都能正常運行。我們可在這種狀態下暫時運行某一程式,但一定要注意網路安全,工作完成後馬上恢復。
添加例外程式:
單擊“開始”,然後單擊“控制臺”。
在經典視圖中,雙擊“系統”。
單擊“高級”選項卡,單擊“性能”,然後單擊“設定”。
在“性能選項”對話框中,單擊“數據執行保護”選項卡。
選擇“為所有程式和服務啟用 DEP,但我選擇的程式和服務除外:”,然後單擊“添加”。
在“打開”對話框中,找到並選擇該應用程式,然後單擊“打開”。
單擊“套用”,然後單擊“確定”。將出現一個提示,通知您必須重新啟動系統後設定才能生效。單擊“確定”。

相關詞條

相關搜尋

熱門詞條

聯絡我們