
cve-2026-40369 の関連メンバーオフセットと関数アドレスを取得するための eprocess オフセットプーラー
Windows の ntoskrnl.exe バイナリから重要なカーネルメタデータを抽出するための IDA Python スクリプトです。このツールは、CVE-2026-40369 やその他のカーネル脆弱性を対象としたエクスプロイトの開発に必要な関数 RVA と _EPROCESS 構造体オフセットを自動的に抽出します。
このツールは、エクスプロイトペイロードにハードコードする必要があるバージョン固有のカーネルメタデータを自動的に抽出することで、CVE-2026-40369 向けのエクスプロイトの作成を支援します。抽出された値により、さまざまな Windows ビルドおよびパッチレベルにわたって、適切な関数フックと構造体メンバーアクセスが保証されます。
関数 RVA の自動抽出: 主要なカーネル関数の RVA を取得します:
ExpGetProcessInformationExpQuerySystemInformationCmpLayerVersionCountCmpLayerVersionsPsInitialSystemProcess_EPROCESS 構造体オフセット: 以下のメンバーのオフセットを抽出します:
UniqueProcessIdActiveProcessLinksTokenImageFileNameすぐに使える出力: CVE-2026-40369 エクスプロイトコードに直接貼り付けられるフォーマット済みの出力を生成します
IDA Pro で ntoskrnl.exe を開きます
対応する Windows PDB シンボルを読み込みます:
スクリプトを実行します:
extract_metadata.py を選択スクリプトは以下を出力します:
=== RVAs (image base = 0x140000000) ===
ExpGetProcessInformation: ea=0x1400a1234 rva=0xa1234
ExpQuerySystemInformation: ea=0x1400a5678 rva=0xa5678
...
=== _EPROCESS member offsets ===
_EPROCESS.UniqueProcessId: 0x440
_EPROCESS.ActiveProcessLinks: 0x448
_EPROCESS.Token: 0x4d8
_EPROCESS.ImageFileName: 0x5e8
=== g_builds[] row (paste at poc.c:146) ===
{ 26200, 8037, 0xA1234, 0xA5678, 0x440, 0x448, 0x4D8, 0x5E8 },
| エラー | 解決方法 |
|---|---|
| "NOT FOUND (PDB not loaded?)" | ntoskrnl.exe のバージョンに対応する正しい Windows PDB ファイルを読み込んでください |
| "_EPROCESS not in Local Types" | PDB が正しく読み込まれていることを確認してください。ファイル → ファイルを読み込む → PDB ファイル を試してください |
| スクリプトは実行されるが出力がない | IDA Python コンソールが開いているか確認してください (ウィンドウ → 出力ウィンドウ → Python) |
このスクリプトは、PDB シンボルが利用可能なすべての Windows ntoskrnl.exe バージョンで動作します。Windows 10 および Windows 11 でテスト済みです。
このツールは、セキュリティ研究および許可された分析目的のみのために、現状のまま提供されます。