2

ユーザースペースアプリケーションにリング0アクセスを提供するWindowsNT用のドライバーを作成しています。外部からの有害な影響から保護されるユーザーのコマンドを実行するための排他的権限を持つユーティリティを作成したいと思います。インターネットサーフィンをしていると、、、などNtOpenProcessのネイティブカーネル関数をフックする必要があることがわかりました。アプリケーションを保護する動作するドライバーを作成しましたが、外部からの試行からも保護する方がよいことに気付きました。ファイアウォールのようにOSの起動中にドライバを削除したり、そのロードを禁止したりします。タスクを2つの部分に分割しました。ドライバーが物理的に削除されないようにすることと、ドライバーの読み込みを担当するレジストリキーを変更/削除しないようにすることです()。NtTerminateProcessNtDublicateObject\system32\drivers\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

問題は、カーネルスペースからレジストリキーへのアクセスをフックする方法がわからず、それが可能かどうかさえわからないことです。レジストリで機能するntdllのすべての関数はユーザースペースにあり、カーネルスペースでは使用できません。また、ユーザースペースから設定できるすべてのAPIフックは、特定のプロセスのメモリコンテキストにあります。したがって、現在または新規のすべてのプロセスにDLLを挿入する必要があります。

すべてのプロセスにDLLを挿入せずに、すべてのNT呼び出しを1か所にフックする方法はありますか?

4

1 に答える 1

1

あなたはこれを間違った方法で行います。レジストリコールもシステムコールではなく、SSDTに常駐します(別のZw *システムコールとして)。しかし、SSDTをフックすることは悪い習慣です。主な欠点s don-PathGuardが原因でx64システムで動作しません。正しい方法は、OSの文書化された特定のフィルタリングメカニズムを使用することです。レジストリ呼び出しの場合は、ConfigurationManagerコールバックです。このコールバックのWindowsXPバージョンにはいくつかの注意点があります(一部の機能は実装されていないか偽物です)が、xpは現在機能していません=)。使い方はとても簡単です。このガイドから開始(および終了=))できますhttp://msdn.microsoft.com/en-us/library/windows/hardware/ff545879(v=vs.85).aspx

于 2012-09-27T09:00:10.910 に答える