プロセスの二重リンクリストには、Flink and Blink(ForwardLinkとBackwardLink)があります。プロセス識別子があります。これらはすべて、PEPROCESSまたは_KPROCESSとして参照される構造体にパックされています。しかし、それらはどこにあり、この構造の他の要素は何ですか?
または、答えが短くも単純でもない場合、ドキュメントまたはヘッダーファイルにない場合、どこで参照を見つけることができますか?(私が見た場所で、おそらく何かを見落とした場所です。)
プロセスの二重リンクリストには、Flink and Blink(ForwardLinkとBackwardLink)があります。プロセス識別子があります。これらはすべて、PEPROCESSまたは_KPROCESSとして参照される構造体にパックされています。しかし、それらはどこにあり、この構造の他の要素は何ですか?
または、答えが短くも単純でもない場合、ドキュメントまたはヘッダーファイルにない場合、どこで参照を見つけることができますか?(私が見た場所で、おそらく何かを見落とした場所です。)
EPROCESS構造は、プロセスのプロセスオブジェクトとして機能する不透明な構造です。
PsGetProcessCreateTimeQuadPartなどの一部のルーチンは、EPROCESSを使用して操作するプロセスを識別します。ドライバーは、PsGetCurrentProcessルーチンを使用して、現在のプロセスのプロセスオブジェクトへのポインターを取得できます。また、ObReferenceObjectByHandleルーチンを使用して、指定されたハンドルに関連付けられているプロセスオブジェクトへのポインターを取得できます。PsInitialSystemProcessグローバル変数は、システムプロセスのプロセスオブジェクトを指します。
プロセスオブジェクトはObjectManagerオブジェクトであることに注意してください。ドライバーは、オブジェクトの参照カウントを維持するために、ObReferenceObjectやObDereferenceObjectなどのオブジェクトマネージャールーチンを使用する必要があります。
これは、プロセス構造のメンバーが何であるかを気にする必要がないことを意味します。それにもかかわらず、プロセス構造のレイアウトを詳述する情報源があります。
この本には、個々のメンバーが何であるかについてのより詳細な説明があります。
EPROCESS構造は、Windowsのデバッグシンボルに記載されています。
windbgを使用してカーネルに接続しているときに、デバッグシンボルが適切に設定されていると仮定すると、コマンド「dt nt!_EPROCESS」を発行すると、接続しているカーネルのバージョンに固有のEPROCESS構造体のレイアウトが得られます。
EPROCESS構造は特に不透明であり、ビルドデバッグシンボルによってエクスポートされたデータ型を調べることにより、ビルドごとにのみ見つけることができます。
したがって、次のことができます。
volatility
volatility
必要に応じて、サンプルメモリダンプの1つまたは独自のダンプで実行します。volshell.pyプラグインを使用して、
dt('_EPROCESS')
これにより、EPROCESSの構造およびWindowsカーネルの他のさまざまな構造の出力が生成されます。
または、ここで構造の内容を確認できます
これも役立つかもしれません