共用方式為


程序代碼完整性檢查

記憶體完整性是以虛擬化為基礎的安全性 (VBS) 功能,可在 Windows 10、Windows 11 Windows Server 2016 和更新版本中使用。 記憶體完整性和 VBS可改善 Windows 的威脅模型,並針對嘗試利用 Windows 核心的惡意代碼提供更強大的保護。 VBS 會使用 Windows Hypervisor 來建立隔離的虛擬環境,成為假設核心可能會遭到入侵之操作系統的根信任。 記憶體完整性是一個重要元件,可在 VBS的隔離虛擬環境中執行核心模式程序代碼完整性,以保護和強化 Windows。 記憶體完整性也會限制可用來危害系統的核心記憶體配置,確保核心記憶體頁面只有在安全運行時間環境中傳遞程式代碼完整性檢查之後才會成為可執行檔,而且可執行檔頁面本身永遠不會寫入。

注意

記憶體完整性有時稱為 受 Hypervisor 保護的程式代碼完整性, (HVCI) Hypervisor 強制執行的程式代碼完整性,最初是發行為 Device Guard 的一部分。 除了在 群組原則 或 Windows 登錄中尋找記憶體完整性和 VBS 設定,否則不再使用 Device Guard。

程式代碼完整性檢查可確保與記憶體完整性的核心記憶體使用量需求相容,並偵測下列違規:

錯誤碼 程式代碼完整性問題
0x2000:
  • 2 - 驅動程式程式代碼中偵測到錯誤的位址。
  • 3 - 集區類型。
  • 4 - 如果) 提供集區標籤 (。

呼叫端指定可執行的集區類型。 預期 (:NonPagedPoolNx)
0x2001:
  • 2 - 驅動程式程式代碼中偵測到錯誤的位址。
  • 3 - 頁面保護 (WIN32_PROTECTION_MASK) 。
呼叫端指定可執行的頁面保護。 (預期:已清除PAGE_EXECUTE* 位)
0x2002:
  • 2 - 驅動程式程式代碼中偵測到錯誤的位址。
  • 3 - 以邏輯方式使用 MdlMapping*) (MM_PAGE_PRIORITY 頁面優先順序。
呼叫端指定可執行的 MDL 對應。 (預期:MdlMappingNoExecute) 。
0x2003:
  • 2 - (Unicode 字串) 映射檔名。
  • 3 - 區段標頭的位址。
  • 4 - 區段名稱 (UTF-8 編碼字串) 。
映像包含可執行檔和可寫入區段。
0x2004:
  • 2 - (Unicode 字串) 映射檔名。
  • 3 - 區段標頭的位址。
  • 4 - 區段名稱 (UTF-8 編碼字串) 。
影像包含未對齊頁面的區段。
0x2005:
  • 2 - (Unicode 字串) 映射檔名。
  • 3 - IAT 目錄。
  • 4 - 區段名稱 (UTF-8 編碼字串) 。
映射包含位於可執行檔區段中的 IAT。

開啟這個選項:

您可以使用驅動程式驗證器管理員或 Verifier.exe 命令行來啟用一或多個驅動程式的程式代碼完整性檢查。 如需詳細資訊,請參閱 選取驅動程式驗證器選項。 您必須重新啟動計算機,才能啟用或停用程式代碼完整性檢查選項。

  • 在命令行

    在命令行中,程式代碼完整性檢查是由 位 25) 0x02000000 (表示。 例如:

    verifier /flags 0x02000000 /driver MyDriver.sys

    下一次開機之後,此功能將會處於作用中狀態。

  • 使用驅動程式驗證器管理員

  1. 啟動驅動程式驗證器管理員。 在 [命令提示字元] 視窗中輸入驗證程式。
  2. 選取 [為程式代碼開發人員建立自定義設定] () ,然後按 [下一步]。
  3. 選取 [ (檢查) 程序代碼完整性檢查]。
  4. 重新啟動電腦。

實作記憶體完整性相容程序代碼