詳細說明 Windows XP Service Pack 2、Windows XP Tablet PC Edition 2005 和 Windows Server 2003 中的資料執行防止 (Data Execution Prevention,DEP) 功能

文章翻譯 文章翻譯
文章編號: 875352 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

「資料執行防止」(DEP) 是一組在記憶體上執行額外檢查的硬體和軟體技術,有助於防止惡意程式碼在系統上執行。在 Microsoft Windows XP Service Pack 2 (SP2) 和 Microsoft Windows XP Tablet PC Edition 2005 中,DEP 會由硬體和軟體強制執行。

DEP 主要優點就是可以防止透過資料頁執行的程式碼。一般而言,程式碼並非從預設堆積和堆疊執行。硬體強制執行的 DEP 會偵測從這些位置執行且執行時產生例外的程式碼。軟體強制執行的 DEP 可以防止惡意程式碼利用 Windows 中的例外處理機制。

簡介

本文說明 Windows XP SP2 和 Microsoft Windows Server 2003 Service Pack 1 (SP1) 中的 DEP 功能,並討論下列主題:

其他相關資訊

硬體強制執行的 DEP

硬體強制執行的 DEP 會將處理程序中的所有記憶體位置標示為不能執行,除非位置明確包含可執行的程式碼。有一種攻擊類別會嘗試從不能執行的記憶體位置,插入並且執行程式碼。DEP 會攔截這些攻擊,並且通知例外情形,以避免這些攻擊。

硬體強制執行的 DEP 依賴處理器硬體以屬性標示記憶體,表示程式碼不可從該記憶體執行。DEP 的運作是以每一虛擬記憶體頁面為單位,通常會以變更分頁表輸入 (PTE) 中某一位元的方式來標示記憶體頁面。

處理器的架構決定 DEP 硬體實作的方式,以及 DEP 如何標示虛擬記憶體頁面。儘管如此,當程式碼是從以適當屬性集標示的記憶體頁面執行時,支援硬體強制執行 DEP 的處理器還是會產生例外狀況。

Advanced Micro Devices (AMD) 和 Intel 這兩家公司都已經定義並且生產了支援 DEP 的 Windows 相容架構。

從 Windows XP SP2 開始,32 位元版本的 Windows 採用了下列其中一個功能:
  • 由 AMD 定義的「不執行頁面保護」(No-execute Page-protection,NX) 處理器功能。
  • 由 Intel 定義的「病毒防護技術」(Execute Disable Bit,XD) 功能。
如果要使用這些處理器功能,處理器必須以「實體位址延伸」(PAE) 模式執行。不過,Windows 將會自動啟用 PAE 模式來支援 DEP。使用者不需使用 /PAE 開機參數,個別啟用 PAE。

注意 因為 64 位元核心會感知 Address Windowing Extensions (AWE),所以在 Windows 的 64 位元版本中沒有分開的 PAE 核心。
如需有關 Windows Server 2003 中 PAE 和 AWE 的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
283037 Windows Server 2003 和 Windows 2000 提供大型記憶體支援

軟體強制執行的 DEP

Windows XP SP2 已經新增了一組「資料執行防止」安全性檢查。這些檢查 (也就是軟體強制執行的 DEP) 是設計來阻擋利用 Windows 例外處理機制的惡意程式碼。軟體強制執行的 DEP 可以在執行 Windows XP SP2 的任何處理器上運作。不論處理器的硬體強制執行的 DEP 功能為何,軟體強制執行的 DEP 預設只能協助保護有限的系統二進位檔案。

優點

DEP 的主要優點就是可以防止透過資料頁 (例如預設堆積頁、各種堆疊頁和記憶體集區頁) 執行的程式碼。一般而言,程式碼並非從預設堆積和堆疊執行。硬體強制執行的 DEP 會偵測從這些位置執行且執行時產生例外的程式碼。如果未處理例外,處理程序就會停止。從核心模式的受保護記憶體執行程式碼,會造成「停止」錯誤。

DEP 可以協助阻擋安全性入侵行為類別。具體來說,DEP 可以協助阻擋利用將病毒或其他類型攻擊以額外程式碼插入處理程序,然後嘗試執行已插入程式碼的惡意程式。在具有 DEP 的系統上,執行已插入的程式碼會造成例外狀況。軟體強制執行的 DEP 可以防止惡意程式碼利用 Windows 中的例外處理機制。

DEP 的系統範圍設定

系統的 DEP 設定是透過 Boot.ini 檔案中的參數控制的。如果您以系統管理員的身分登入,現在,您可以使用 [控制台] 中的 [系統] 對話方塊輕鬆地設定 DEP 設定。

Windows 對於硬體強制執行的 DEP 和軟體強制執行的 DEP 都支援四種系統範圍的設定。
摺疊此表格展開此表格
設定說明
OptIn此為預設設定。在具有可以執行硬體強制執行 DEP 的處理器的系統上,已選取的有限系統二進位檔案和程式預設已啟用 DEP。使用這個選項,只有 Windows 系統二進位檔案會預設由 DEP 所保護。
OptOut所有處理程序都會預設啟用 DEP。您可以使用 [控制台] 中的 [系統] 對話方塊,手動建立不套用 DEP 的特定程式清單。資訊技術 (IT) 專業人員可以使用 Application Compatibility Toolkit,從 DEP 保護中剔除一或多個程式。DEP 的系統相容性修正程式或 Shim 會立即發揮作用。
AlwaysOn此設定為整個系統提供完整的 DEP 保護範圍。所有的處理程序一律會在套用 DEP 的情況下一起執行。無法使用例外清單,將特定程式從 DEP 保護中剔除。DEP 的系統相容性修正程式不會產生作用。已經使用 Application Compatibility Toolkit 選擇不使用 DEP 的程式,會在套用 DEP 的情況下一起執行。
AlwaysOff無論硬體 DEP 支援為何,此設定不會為系統的任何部分提供 DEP 保護。處理器不會以 PAE 模式執行,除非 Boot.ini 檔案中存有 /PAE 選項。
硬體強制執行的 DEP 和軟體強制執行的 DEP 都是以相同的方式設定。如果系統範圍的 DEP 原則是設定為 OptIn,相同的 Windows 核心二進位檔案和程式將會同時受到硬體強制執行的 DEP 和軟體強制執行的 DEP 的保護。如果系統無法使用硬體強制執行的 DEP,Windows 核心二進位檔案和程式將只會受到軟體強制執行的 DEP 的保護。

同樣地,如果系統範圍的 DEP 原則是設定為 OptOut,已從 DEP 保護範圍剔除的程式將不會受到硬體強制執行的 DEP 和軟體強制執行的 DEP 的保護。

Boot.ini 檔案的設定如下:
/noexecute=policy_level
注意policy_level 會定義為 AlwaysOn、AlwaysOff、OptIn 或 OptOut。

安裝 Windows XP SP2 時,Boot.ini 檔案中現有的 /noexecute 設定不會變更。如果 Windows 作業系統影像在電腦間移動,或者不受硬體強制執行的 DEP 的支援,這些設定也不會遭到變更。

安裝 Windows XP SP2 與 Windows Server 2003 SP1 或更新版本期間,預設會啟用 OptIn 原則層級,除非自動安裝另指定了其他原則層級。如果 /noexecute=policy_level 設定未包含在支援 DEP 的 Windows 版本的 Boot.ini 檔案中,就會依照像是加入 /noexecute=OptIn 設定的相同方式運作。

如果您以系統管理員的身分登入,就可以使用 [系統內容] 中的 [資料執行防止] 索引標籤,在 OptIn 和 OptOut 原則之間進行切換,以手動設定 DEP。下列程序將告訴您,如何手動設定電腦的 DEP:
  1. 按一下 [開始],再按一下 [執行],輸入 sysdm.cpl,然後按一下 [確定]
  2. [進階] 索引標籤上,按一下 [效能] 下方的 [設定]
  3. [資料執行防止] 索引標籤上,使用下列其中一個程序:
    • 按一下 [只為基本的 Windows 程式和服務開啟 DEP] 以選取 OptIn 原則。
    • 按一下 [為所有的 Windows 程式和服務開啟 DEP,除了我選擇的這些] 以選取 OptOut 原則,然後按一下 [新增],以新增您不想要使用 DEP 功能的程式。
  4. 按兩次 [確定]
IT 專業人員可以利用不同的方法來控制系統範圍的 DEP 設定。Boot.ini 檔案可以藉由 Windows XP SP2 所隨附的指令檔機制或 Bootcfg.exe 工具,直接修改。

如果要使用 Boot.ini 檔案將 DEP 切換為 AlwaysOn 原則,請依照下列步驟執行:
  1. 按一下 [開始],用滑鼠右鍵按一下 [我的電腦],然後按一下 [內容]
  2. 按一下 [進階] 索引標籤,然後按一下 [啟動及修復] 欄位下方的 [設定]
  3. [系統啟動] 欄位中,按一下 [編輯]。隨即 Boot.ini 檔案會在「記事本」中開啟。
  4. 在「記事本」中,按一下 [編輯] 功能表上的 [尋找]
  5. [尋找目標] 方塊中,輸入 /noexecute,然後按一下 [找下一個]
  6. [尋找] 對話方塊中,按一下 [取消]
  7. 使用 AlwaysOn 取代 policy_level

    警告 請務必正確無誤地輸入文字。Boot.ini 檔案參數現在應該為:
    /noexecute=AlwaysOn
  8. 在「記事本」中,按一下 [檔案] 功能表上的 [儲存檔案]
  9. 按兩次 [確定]
  10. 重新啟動電腦。
如果您要自動安裝 Windows XP SP2 或更新版本,可以使用 Unattend.txt 檔案預設特定的 DEP 設定。您可以在 Unattend.txt 檔案的 [Data] 區段中使用 OSLoadOptionsVar 項目,以指定系統範圍的 DEP 設定。

每個程式的 DEP 設定

基於程式相容性的考量,當 DEP 設定為 OptOut 原則層級時,您可以選擇性地停用個別 32 位元程式的 DEP。如果要執行這項操作,請使用 [系統內容] 中的 [資料執行防止] 索引標籤,個別為程式停用 DEP。現已提供 IT 專業人員新的程式相容性修正程式,名為 DisableNX,此修正程式隨附於 Windows XP SP2。DisableNX 相容性修正程式可以針對適用修正程式的程式,停用「資料執行防止」。

您可以利用 Application Compatibility Toolkit,將 DisableNX 相容性修正程式套用至程式。如需有關 Windows 應用程式相容性的詳細資訊,請參閱下列 Microsoft 網站上的 Windows 應用程式相容性 (英文):
http://www.microsoft.com/technet/prodtechnol/windows/appcompatibility/default.mspx
如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
912923 How to determine that hardware DEP is available and configured on your computer

?考

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
899298 The "Understanding Data Execution Prevention" help topic incorrectly states the default setting for DEP in Windows Server 2003 Service Pack 1

屬性

文章編號: 875352 - 上次校閱: 2013年6月10日 - 版次: 14.3
這篇文章中的資訊適用於:
  • Microsoft Windows Server 2003 Service Pack 1?應用於:
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
關鍵字:?
kbtshoot kbinfo KB875352
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com