Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
windbg-decompile-ext — 実行中の関数を逆アセンブルし、LLMを使用して検証済みの擬似コードを生成するWinDbg x64拡張機能。 | Kitploit
ツール/GitHubGitHub/kernullist/windbg-decompile-ext
静的分析動的分析 (サンドボックス)コード分析リバースエンジニアリングデバッガマルウェア分析バイナリ解析学習と教育AI支援リバースエンジニアリングファームウェア解析バイナリエクスプロイト
11211643ヶ月前Kitploit レビュー済み
GitHub
kernullist/windbg-decompile-ext

windbg-decompile-ext

実行中の関数を逆アセンブルし、LLMを使用して検証済みの擬似コードを生成するWinDbg x64拡張機能。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Windbg Decompile Extension via LLM

native decompile viewer

screenshot

このプロジェクトは、Windows x64 WinDbg 拡張スケルトンであり、名前またはアドレスで関数を解決し、決定論的な制御フロービューを再構築し、拡張機能から直接 LLM に問い合わせて擬似コードを生成するものです。

Layout

  • src/extension: WinDbg 拡張 DLL と !decomp コマンド。
  • src/shared: 拡張機能で共有される JSON、アナライザー、プロトコル、検証コード。
  • scripts: ビルドおよびベンダーコピーのヘルパー。
  • third_party/dbgeng: オプションでベンダー提供の dbgeng.h と dbgeng.lib のコピー。
  • third_party/zydis: ベンダー提供の安定版 Zydis ソースツリー。存在する場合、デフォルトで使用されます。

Current Scope

  • x64 のみの前提
  • DbgEng によるライブメモリ解析
  • 安定したニーモニック/オペランド復元のための Zydis ベースの構造化逆アセンブル
  • シンボル領域、アンワインド、およびヒューリスティックな関数範囲の復元
  • 受信レジスタ引数、スタックスロットのローカル変数、マージ候補、正規化された分岐条件のための SSA-lite スタイルの復元
  • 定義使用ヒント、標準化されたコピー/定数式、デッド定義マーカーを備えた低レベル IR 値ファクト
  • レジスタとスタックローカル変数にわたる収束した live-in/live-out 到達定義のためのブロックレベルの値状態ファクト
  • 自然ループ、if/else 候補、switch 候補、ループ誘導メタデータ、switch 範囲/デフォルトメタデータのための支配関係に基づく制御フロー領域ファクト
  • シャドウ/ホームスロット、スタックポインタ差分、プロローグ/エピローグ認識、no-return 呼び出し、テールコール、サンク、インポートラッパー候補、復元されたレジスタ/スタック呼び出し引数のための x64 ABI ファクト
  • xmm0 から xmm3 までの SIMD/FP 対応 Microsoft x64 引数復元。偽の受信引数を回避するためのベクトルゼロイディオムガード付き
  • ポインタ風の値、スタックローカル変数、フィールドオフセット、スケール付きインデックス配列、enum 風比較、ビットフラグテスト、vtable 候補のための型復元ヒント
  • メモリ/文字列ヘルパー、セキュリティクッキー、スタックプローブ、アロケータ、集約初期化子、RIP 相対グローバル/インポートロードのためのイディオムおよびライブラリパターンファクト
  • 直接呼び出し、レジスタ/メモリ間接呼び出し、仮想呼び出し/vtable オフセット候補、戻り値の型、パラメータモデル、副作用、メモリ影響、所有権ヒント、信頼度のための呼び出しターゲットファクト
  • 制御フロー平坦化ディスパッチャ、復元された意味的エッジ、不透明述語のデッドエッジ、スカラー命令置換イディオムのための OLLVM スタイル難読化ファクト
  • 復元された難読化ファクトが擬似 C 書き換えを導くことができるかどうかを制御する /deobf:on|off に加えた難読化解除準備ファクト
  • 高シグナルのアナライザー、PDB、および観測された動作ファクトを命令/ブロックのグラウンディングにリンクするエビデンスグラフファクト
  • アナライザー生成の擬似コードスケルトン、CFG 領域・条件・重要ブロックのグラフ認識サマリー、ランク付けされた高シグナルファクト選択、大規模ファクトセットのスプレッドサンプリングを用いた refine-first プロンプティング
  • 出力コールバックが DML をサポートする場合の、エントリ/ベーシックブロック/エビデンス/呼び出しターゲットナビゲーションのための WinDbg DML リンク
  • brief、エビデンス説明、ファクトのみ、デバッグプロンプト、JSON、データモデルスタイル出力のための分離された結果モード
  • no-return、型、フィールド、リネームヒントのためのユーザー修正スイッチ
  • ライブ、ダンプ、カーネル、TTD 風セッションのためのセッション認識解析ポリシーファクト
  • 現在のデバッガコンテキストからの観測された動作ファクト。利用可能な場合はレジスタ引数サンプル、メモリホットスポット、TTD クエリ提案を含む
  • LLM プロンプティングのための RIP 相対文字列/グローバル/IAT 分類と呼び出しターゲットシグネチャヒント
  • LLM プロンプティングのためのロード済み PDB 認識プロトタイプ、スコープ付きパラメータ/ローカル変数、フィールド、enum、ソースラインヒント
  • 拡張機能からの直接インプロセス LLM 呼び出し
  • OpenAI 互換 HTTP アダプタまたは決定論的モックフォールバック
  • LLM 出力に対する検証パス

WinDbg Usage

ビルド出力から拡張機能をロードし、シンボルまたはアドレスに対して !decomp を実行します。```text .load C:\path\to\decomp.dll !decomp /doctor !decomp module!FunctionName !decomp 0x7ffb`12345678

セットアップが正しくないように見える場合、またはLLMプロバイダーを有効化する前に `/doctor` を使用してください:```text
!decomp /doctor
!decomp /doctor:net
  • /doctor は対象を必要とせず、プロバイダーを呼び出しません。設定ファイルのパス/読み込み状態、プロバイダー/モデル/エンドポイントの概要、シークレットを含まない認証情報の有無、タイムアウト/トークン/チャンク化設定、DML サポート、セッションクラス/修飾子、プロセッサタイプ、および PDB の注意事項を報告します。
  • /doctor:net は明示的なネットワークチェック要求として受け入れられますが、現在はプロバイダーの ping がスキップされることを報告します。この拡張機能は doctor モードからネットワークプローブを実行しません。
  • API キー、ベアラートークン、リフレッシュトークン、URL クエリ文字列などのシークレット値は出力されません。

ターゲットは、パブリック/プライベートシンボル、エクスポートされた関数名、またはアドレスにすることができます。ターゲットが関数内のアドレスに解決される場合、拡張機能はシンボル、アンワインドデータ、および制御フローヒューリスティックから包含関数の範囲を復元しようとします。スペースを含むターゲットは引用符で囲んでください:```text !decomp "my module!Function With Spaces"

通常のコマンドパスは、ローカル解析を実行し、アナライザーファクトを構築し、オプションで設定されたLLMエンドポイントを呼び出し、復元された証拠に対して応答を検証し、疑似Cコードに加えて信頼度、警告、不確実性の注記を出力します:```text
!decomp ntdll!RtlAllocateHeap
!decomp kernel32!Sleep
!decomp game.exe!CheckIntegrity

通常の brief および explain 出力には、/verbose を指定しなくてもコンパクトな進捗ストリームが含まれます。長時間のLLM実行では、ローカル分析の完了、チャンクの進捗、再試行通知、マージ開始、検証、Ctrl+Breakによるキャンセルのヒントが表示されます。/view:json、/view:facts、/view:prompt、/view:data などの機械可読モードでは、進捗行とDMLヘルパーリンクが抑制されるため、スクリプトは要求されたペイロードのみを受け取ります。

/view:* を使用して表示内容を選択します。これによりコマンド体系が小さく保たれ、1つのオプションですべての出力モードを制御できます。```text !decomp /view:brief module!HotPath !decomp /view:explain module!BranchyFunction !decomp /view:json module!FunctionName !decomp /view:facts module!FunctionName !decomp /view:prompt module!FunctionName !decomp /view:data module!FunctionName !decomp /view:analyzer module!FunctionName !decomp /view:plan module!FunctionName

- `brief` は、ターゲット、信頼度、要約、および最初の不確実性または検証警告を表示します。
- `explain` は、evidence、control-flow、type-hint、observed-behavior、call-target の各セクションを追加します。
- `json` は、機械可読なリクエストとレスポンスの JSON を表示します。
- `facts` は、analyzer のファクトのみを表示し、LLM パスを無効にします。
- `prompt` は、正確なシステムプロンプト、ユーザープロンプト、およびプロンプトファクトを表示します。LLM 呼び出しを無効にします。
- `data` は、WinDbg JavaScript/NatVis スタイルの自動化を目的とした、安定した JSON スナップショットを表示します。
- `analyzer` は、LLM を呼び出さずに、決定的な analyzer 専用の疑似コードパスをレンダリングします。
- `plan` は、LLM を呼び出さず、結果キャッシュも更新せずにローカル分析を実行し、プリフライトプランを表示します。これには、target/module/range の数、PDB の可用性、セッションポリシー、推定チャンキング、プロンプトサイズに関連するカウント、および実用的な推奨事項が含まれます。

コマンドが停止しているように見える場合、または完全な進捗ストリームを確認したい場合は、`/verbose` を使用してください:```text
!decomp /verbose module!SlowFunction
!decomp /verbose /view:json module!SlowFunction
  • /verbose は、ターゲット解決、関数範囲の復元、バイト読み取り、逆アセンブル、アナライザのファクト構築、PDB/セッションの拡充、疑似コードのトークン化、検証結果などのローカルステージを表示します。
  • LLM モードでは、/verbose はプロンプトサイズ、リクエストトークンの予算、HTTP 接続/送信/受信ステージ、レスポンスチャンクサイズ、完了理由、抽出されたモデル JSON のプレビュー、再試行回数、検証フィードバックによる再試行の決定も表示します。
  • API キーは表示されません。リクエスト/レスポンスログには、完全なヘッダーや完全なプロンプト本文ではなく、サイズと短いプレビューが表示されます。
  • /verbose はコンパクトな進捗ストリームを完全なトレースに置き換えます。コンパクトな進捗行だけでは時間の消費箇所を特定できない場合に使用します。
  • 長時間実行される !decomp コマンド中に、WinDbg で Ctrl+Break を押すとキャンセルを要求できます。拡張機能は、ローカル解析ステージ間および LLM ワーカーの待機中に割り込みをチェックし、アクティブな同期 HTTP I/O の停止を要求します。

/brief、/explain、/json、/facts-only、/debug-prompt、/data-model、/dx、/no-llm などのレガシーエイリアスは古いスクリプトでも引き続き動作しますが、新しい例では /view:* を使用します。

ウィンドウビューア:```text !decomp /view:window module!FunctionName !decomp /view:window /view:explain module!FunctionName

- `/view:window` は対象に対して通常の `!decomp` 結果パスを実行し、レンダリングされた完全な結果を別のビューアで開きます。
- ビューアはコンソールパスと同じレスポンスレンダラを使用し、その後、デバッガウィンドウが見つかった場合にはそのウィンドウが所有するネイティブなWin32モードレスツールウィンドウを開きます。
- デバッガ出力には、ネイティブビューアのウィンドウハンドルが報告されます。ビューアウィンドウを作成できない場合、コマンドは警告を表示し、通常のコンソール結果にフォールバックします。
- DML専用リンクは、ビューア内ではコマンド文字列付きのテキストラベルとして表示されます。RichEditが利用可能な場合、ウィンドウはセクション見出し、メタデータのスタイル、擬似コードのハイライトを備えたGitHubスタイルのRTFレイアウトを使用します。それ以外の場合はプレーンテキストにフォールバックします。
- 現在のセッションに以前のキャッシュ結果がある場合、ビューアは左側に履歴リストを表示するため、分析を再実行せずに現在の出力と以前の逆コンパイル結果を切り替えることができます。
- `/view:json`、`/view:facts`、`/view:prompt`、`/view:data` はマシンリーダブルなコンソール出力のままであり、ビューアにはリダイレクトされません。

大きな関数:```text
!decomp /limit:deep module!LargeFunction
!decomp /limit:huge module!VeryLargeFunction
!decomp /limit:12000 module!VeryLargeFunction
!decomp /timeout:120000 module!SlowFunction
  • /limit:deep は命令上限を 8192 に引き上げます。
  • /limit:huge は命令上限を 16384 に引き上げます。
  • /limit:N は明示的な命令上限を設定します。
  • /timeout:MS はこの呼び出しのリクエストタイムアウトを上書きします。
  • LLM チャンク分割は decomp.llm.json によって制御され、コマンドラインの命令上限は、プロンプト実行前に拡張機能が復元を試みるローカルコードの量を制御します。
  • レガシーの /deep、/huge、/maxinsn:N は引き続きサポートされます。

難読化対応の逆コンパイル:```text !decomp /deobf:on module!FlattenedFunction !decomp /deobf:off module!FlattenedFunction !decomp /view:facts /deobf:off module!FlattenedFunction

- `/deobf:on` がデフォルトです。アナライザは引き続き生のファクトを出力しますが、信頼度の高い OLLVM 風ディスパッチャ復元、不透明なデッドエッジの証明、置換イディオム、意味的 CFG オーバーレイが、プロンプトファクト、マージポリシー、検証器の競合ポリシー、構造化された疑似 C 復元を導く場合があります。
- `/deobf:off` は `obfuscation`、`semantic_control_flow`、`deobfuscation_readiness` の各ファクトを表示したままにしますが、書き換えの安全なアクションを無効にし、制御フロー構造化を生の CFG に対して行い、プロンプト/マージ/検証器の各経路に難読化された元の形状を保持するよう指示します。
- ディスパッチャ、偽の分岐、置換の表面を直接調査したい場合は、拡張機能に難読化解除された構造の復元を依頼する代わりに `/deobf:off` を使用してください。
- `/deobfuscation:on|off` はより長いエイリアスとして受け付けられます。
ツールをダウンロード