ProcessStrictHandleCheckPolicySetProcessMitigationPolicy
を有効にするために Windows 10 で使用しようとしています。
プロセスが無効なハンドルを操作すると、プロセスは致命的なエラーを受け取ります。
原則として、厳密なハンドル チェックをオンにすると、オフにすることはできません。したがって、このポリシーでSetProcessMitigationPolicy関数を呼び出す場合、RaiseExceptionOnInvalidHandleReferenceおよびHandleExceptionsPermanentlyEnabled サブ構造メンバーの値は同じである必要があります。無効なハンドルの例外を一時的にのみ有効にすることはできません。
他の多くの軽減策を有効にすることができます。
ProcessDynamicCodePolicy
: プロセスの動的コード ポリシー。オンにすると、プロセスは動的コードを生成したり、既存の実行可能コードを変更したりできなくなります。ProcessExtensionPointDisablePolicy
: レガシ拡張ポイント DLL のプロセス軽減ポリシー設定が含まれています。ProcessSignaturePolicy
: イメージの読み込みを、Microsoft、Windows ストア、または Microsoft、Windows ストア、および Windows Hardware Quality Labs (WHQL) によって署名されたイメージに制限できるプロセスのポリシー。ProcessFontDisablePolicy
: プロセスのフォント読み込みに関するポリシー。オンにすると、プロセスは非システム フォントをロードできません。ProcessImageLoadPolicy
: プロセスのイメージ読み込みに関するポリシー。プロセスにマップできる実行可能イメージのタイプを決定します。オンにすると、リモート デバイスや必須ラベルが低いファイルなど、一部の場所からイメージを読み込むことができなくなります。
しかしProcessStrictHandleCheckPolicy :
PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY policy;
policy.RaiseExceptionOnInvalidHandleReference = 1;
policy.HandleExceptionsPermanentlyEnabled = 1;
BOOL res = SetProcessMitigationPolicy(ProcessStrictHandleCheckPolicy, policy, sizeof(policy));
if (!res)
RaiseLastWin32Error();
エラー コード 87 で失敗します。
ERROR_INVALID_PARAMETER
パラメータが正しくありません
なにが問題ですか?
ボーナスおしゃべり
ProcessDynamicCodePolicyポリシーは、組み込み Web ブラウザーが Javascript を実行するのを防ぎます。
ProhibitDynamicCode
: プロセスが動的コードを生成したり、既存の実行可能コードを変更したりしないようにするには、(0x1) を設定します。それ以外の場合は未設定 (0x0) のままにします。AllowThreadOptOut
: ThreadInformation パラメーターをThreadDynamicCodePolicyに設定してSetThreadInformation関数を呼び出すことにより、スレッドが動的コード生成の制限をオプトアウトできるように (0x1) を設定します。それ以外の場合は未設定 (0x0) のままにします。強力なセキュリティを提供するために、 AllowThreadOptOutとThreadDynamicCodePolicyの設定を一緒に使用しないでください。これらの設定は、完全な動的コード制限に対してアプリケーションがコードをより簡単に適応できるようにすることのみを目的としています。
より多くのボーナス
私は実際には Delphi を使用しているため、構文は上記の C/C++/C# 擬似コードとは異なります。
type
//ProcessStrictHandleCheckPolicy - The process will receive a fatal error if it manipulates an invalid handle. Useful for preventing downstream problems in a process due to handle misuse.
PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY = record
Flags: DWORD;
//DWORD RaiseExceptionOnInvalidHandleReference : 1;
//DWORD HandleExceptionsPermanentlyEnabled : 1;
//DWORD ReservedFlags : 30;
end;
procedure SetMitigationPolicy;
var
policy: PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY;
res: BOOL;
begin
policy.Flags := $00000002;
res := SetProcessMitigationPolicy(ProcessStrictHandleCheckPolicy, @policy, sizeof(policy));
if not res then
RaiseLastWin32Error;
end;
質問は変わりません:
- 厳密には Delphi 関連ではない Delphi コードを投稿すると、Delphi タグを含めるべきだったというコメントが表示されることがあります。
- Delphi コードを投稿すると、Delphi に厳密には関係なく、Delphi タグを含めるべきではなかったというコメントが表示されることがあります。
サイコロを振る
delphi delphi-xe6タグを含めないでください。