Process Monitorは、カーネル ドライバーまたは ETW (以下を参照) を使用して、レジストリ イベントをキャプチャします。Process Monitor が一部のデータ (ネットワーク情報など) に ETW を使用していることは知っています。
EasyHook のような API フックまたは迂回メカニズムは、通常、Win32 API レベル ( ADVAPI32.dllRegSetValue
など) で動作します。RegCreateKeyEx
このため、言及した制限があります。ユーザーモードのレジストリアクセスのみがキャプチャされます。さらに、API フックは通常、プロセスごとに行われるため、データを収集する各プロセスに自分自身を挿入する必要があります。システム全体のすべてのアクセスを本当にキャプチャしたい場合は、プロセスの作成も監視する必要があります。
Event Tracing for Windows (ETW) は、(比較的言えば) すべてのレジストリ アクセスをキャプチャする簡単な方法です。ETW の背後にある基本的な考え方は、OS、ランタイム、ライブラリ、および日常的なアプリケーションの開発者でさえ、特定のインストルメンテーションをコードに追加して、興味深いイベントやシナリオに関するデータをログに記録できるというものです。このトレースはオーバーヘッドが少なく、簡単に収集できます。ETW が登場してからしばらく経ちましたが、Vista 以降のカーネル全体で注目を集めています。現在、ほとんどすべての主要なカーネル サブシステムに ETW が装備されています。また、Windows イベント ログの基礎にもなっています。
ETW にはかなりの負担があり、一部の分野では実質的なドキュメントが不足していますが、興味がある場合は、次を確認してください。
カーネル モードのレジストリ アクセスをキャッチするには、C++ で記述する必要がありますか?
いいえ、上記のTraceEventライブラリを使用すると、C# を使用して、システム全体のカーネル モードおよびユーザー モードのレジストリ アクセスをキャプチャして分析できます。