ユーザースペースアプリケーションにリング0アクセスを提供するWindowsNT用のドライバーを作成しています。外部からの有害な影響から保護されるユーザーのコマンドを実行するための排他的権限を持つユーティリティを作成したいと思います。インターネットサーフィンをしていると、、、などNtOpenProcess
のネイティブカーネル関数をフックする必要があることがわかりました。アプリケーションを保護する動作するドライバーを作成しましたが、外部からの試行からも保護する方がよいことに気付きました。ファイアウォールのようにOSの起動中にドライバを削除したり、そのロードを禁止したりします。タスクを2つの部分に分割しました。ドライバーが物理的に削除されないようにすることと、ドライバーの読み込みを担当するレジストリキーを変更/削除しないようにすることです()。NtTerminateProcess
NtDublicateObject
\system32\drivers\
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
問題は、カーネルスペースからレジストリキーへのアクセスをフックする方法がわからず、それが可能かどうかさえわからないことです。レジストリで機能するntdllのすべての関数はユーザースペースにあり、カーネルスペースでは使用できません。また、ユーザースペースから設定できるすべてのAPIフックは、特定のプロセスのメモリコンテキストにあります。したがって、現在または新規のすべてのプロセスにDLLを挿入する必要があります。
すべてのプロセスにDLLを挿入せずに、すべてのNT呼び出しを1か所にフックする方法はありますか?