次の方法で共有


コード整合性チェック

メモリ整合性は、Windows 10、Windows 11、およびWindows Server 2016以降で使用できる仮想化ベースのセキュリティ (VBS) 機能です。 メモリ整合性とVBSは、Windowsの脅威モデルを改善し、Windowsカーネルを悪用しようとするマルウェアに対する保護を強化します。 VBSは、Windowsハイパーバイザーを使用して、カーネルが侵害される可能性があると想定するOSの信頼のルートとなる分離された仮想環境を作成します。 メモリ整合性は、VBSの分離された仮想環境内でカーネルモードのコード整合性を実行することによってWindowsを保護および強化する重要なコンポーネントです。 また、メモリの整合性は、システムの侵害に使用される可能性のあるカーネルメモリの割り当てを制限し、カーネルメモリページが安全なランタイム環境内でコードの整合性チェックに合格した後にのみ実行可能になり、実行可能ページ自体が書き込み可能になることはありません。

Note

メモリの整合性は、ハイパーバイザーで保護されたコードの整合性 (HVCI) またはハイパーバイザーによって適用されるコードの整合性と呼ばれることがあり、当初はDevice Guardの一部としてリリースされました。 Device Guardは、グループポリシーまたはWindowsレジストリでメモリの整合性とVBS設定を検索する場合を除き、使用されなくなりました。

コードの整合性チェックは、メモリの整合性のカーネルメモリ使用量の要件との互換性を確認し、次の違反を検出します。

エラー コード コードの整合性の問題
0x2000:
  • 2-エラーが検出されたドライバーのコード内のアドレス。
  • 3-プールの種類。
  • 4-プールタグ (指定されている場合) 。

呼び出し元は、実行可能なプールの種類を指定しました。 (予想: NonPagedPoolNx)
0x2001:
  • 2-エラーが検出されたドライバーのコード内のアドレス。
  • 3-ページ保護 (WIN32_PROTECTION_MASK) 。
呼び出し元は、実行可能ページの保護を指定しました。 (予想:クリアされたPAGE_EXECUTE*ビット)
0x2002:
  • 2-エラーが検出されたドライバーのコード内のアドレス。
  • 3-ページの優先順位 (MM_PAGE_PRIORITY MdlMapping*と論理的にORされます) 。
呼び出し元は、実行可能な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コマンドラインを使用して、1つまたは複数のドライバーのコード整合性チェックをアクティブ化できます。 詳細については、「ドライバー検証オプションの選択」を参照してください。 コード整合性チェックオプションをアクティブ化または非アクティブ化するには、コンピューターを再起動する必要があります。

  • コマンドラインで

    コマンドラインでは、コード整合性チェックは0x02000000 (ビット25) で表されます。 次に例を示します。

    verifier /flags 0x02000000 /driver MyDriver.sys

    この機能は次回の起動後に有効になります。

  • ドライバー検証マネージャーの使用

  1. ドライバー検証マネージャーを起動します。 コマンドプロンプトウィンドウで 「Verifier」 と入力します。
  2. [カスタム設定の作成 (コード開発者向け) ] を選択し、 [次へ] をクリックします。
  3. コードの整合性チェックを選択 (チェック) します。
  4. コンピューターを再起動します。

メモリ整合性の互換性のあるコードを実装します