1

どのドライバーがハンドルの所有者であるかを判別する方法はありますか? つまり、Windows オブジェクトはどこに保存されているのでしょうか? Volatilty 経由でハンドルを確認できますが、すべてのカーネル ハンドルが System.exe pid:4 に割り当てられています。このシステム ハンドルを使用しているドライバーを正確に知る必要がありますか?

ありがとう

4

1 に答える 1

1

どのドライバーがハンドルの所有者であるかを判断する方法はありますか?

カーネル モジュール (またはカーネル空間のスレッド) がカーネル API (NtCreateFile など) を呼び出すと、システム プロセスのハンドル テーブルからハンドルが割り当てられます。この場合、答えはノーです。

つまり、Windows オブジェクトはどこに保存されているのでしょうか?

いいえ

このシステム ハンドルを使用しているドライバーを正確に知る必要がありますか?

あなたが行っている分析に依存します。オブジェクトを所有するドライバーにオブジェクトを関連付ける必要がある場合は、_POOL_HEADER 構造を分析して、割り当てを作成したユーザーに関する情報を取得できます。ただし、エグゼクティブ オブジェクト (_FILE オブジェクトなど) を分析する必要がある場合、このヘッダーの PoolTag フィールドは ObjectType.Key と同じになるため、この方法は目的にはあまり役立ちません。一般に、プロセスがアクセスできるリソース (つまり、メモリ マップ ファイル) を探している場合は、memmap volatility のプラグインを使用して、プロセスのページ テーブルとプロセスのメモリ領域を分析できます。プロセスの仮想アドレス空間に関する高レベルの情報を収集できるように、VAD 構造の専用プラグインを使用することをお勧めします。

于 2016-01-06T16:12:31.707 に答える