6

私はWindowsのいくつかの機能をフックするドライバーを開発しています(いくつかのアクションをブロックする強化ドライバー)。問題は、それらのアクションを実行しようとしたユーザーをログに記録したいということです。

たとえば、レジ​​ストリの書き込みをフィルタリングするために、ZwSetValueKeyにフックを設定しました。

フックは完全に機能しますが、発信者のSIDを取得する方法がわかりません。ExGetPreviousModeを使用して、呼び出し元のモード(つまり、ユーザーモードまたはカーネルモード)を判別できることがわかりました。しかし、発信者がユーザーモードであった場合にSIDを判別する方法がよくわかりません。

ありがとう。

4

2 に答える 2

4

これがユーザー モードの場合は、 or から始めて、GetCurrentProcessorGetCurrentThreadを呼び出しGetProcessTokenますGetThreadToken。これにより、SID を直接抽出できるアクセス トークンが取得されます。カーネルモデルでは、スレッドには や などPsGetCurrentProcessがあります。ZwOpenProcessTokenEx

ユーザー空間に関する同等の質問は次のとおりです: How to get Calling-Process Windows User Access Token

私はこれをテストしていませんが、あなたが始められることを願っています.

于 2012-11-07T21:45:49.477 に答える
0

VOID SeCaptureSubjectContext( Out PSECURITY_SUBJECT_CONTEXT) は、少なくとも ntifs.h が利用可能な場合、おそらく探しているカーネルモード API です。

于 2018-09-27T13:05:46.080 に答える