
IDAssist v2.3.0
IDA Pro用のAI搭載リバースエンジニアリングプラグイン
IDAssist
AIを活用したIDA Pro向けリバースエンジニアリングプラグイン
作者: Jason Tang
説明
IDAssistは、LLMを活用した解析をIDAのインターフェースに直接統合するIDA Proプラグインです。設定可能なLLMプロバイダー、セマンティックナレッジグラフ、RAGドキュメント検索を通じてAI支援によるバイナリリバースエンジニアリングを提供し、多種多様なLLMプロバイダーをサポートします。
PythonとPySide6で構築されたIDAssistは、IDA Pro 9.0+内でドッキング可能なパネルとして動作し、LLMプロバイダー(OpenAI、Anthropic、Ollama、LiteLLMなど)と通信して、関数の解析、リネーム提案、コードに関する質問への回答、バイナリ全体の検索可能なナレッジグラフの構築を行います。

コア機能
関数説明 — 逆コンパイルされた関数の詳細な自然言語説明を生成し、リスクレベル、アクティビティプロファイル、セキュリティフラグ、API検出を含む自動セキュリティ解析を行います。
対話型クエリチャット — 永続的なチャット履歴を使用してバイナリに関する質問をします。コンテキストマクロ(#func、#addr、#line、#range)を使用して、関数コード、アドレス、逆アセンブル範囲をクエリに挿入します。
自動アクション — AIによる関数、変数、型のリネーム提案。信頼スコア付きのテーブルで提案された変更を確認し、選択したアクションをIDBに適用します。
セマンティックナレッジグラフ — バイナリの関数、呼び出し関係、データフロー、セキュリティ特性のナレッジグラフを構築して探索します。ビジュアルグラフレンダリング、セマンティック検索、コミュニティ検出を含みます。
RAGドキュメント検索 — 参照ドキュメント(.txt、.md、.rst、.pdf)をアップロードし、LLMクエリのコンテキストとして使用します。Whooshインデックスによるハイブリッドテキスト+ベクトル検索をサポートします。
SymGraph統合 — 関数名、変数名、型、グラフデータをSymGraphコラボレーションプラットフォームにプッシュ/プルします。プル時の競合解決機能を備えたマルチステップウィザードが含まれます。
設定管理 — 複数のLLMおよびMCPプロバイダーの設定、SymGraph API認証情報の管理、システムプロンプトのカスタマイズ、データベースパスの設定を行います。
高度な機能
ReActエージェント
クエリタブは自律型ReAct(Reasoning + Acting)エージェントモードをサポートします。有効にすると、LLMが調査戦略を計画し、情報収集のためのツールを実行し、結果を考察し、包括的な回答を合成します。これらすべてが複数の推論ラウンドにわたって自動的に行われます。
拡張思考
応答前にLLMが「考える」量を制御するための推論努力レベルを設定します:
| レベル | 思考予算 | 最適用途 |
|---|---|---|
| なし | 無効 | 高速で単純なクエリ |
| 低 | ~2Kトークン | 簡単な解析 |
| 中 | ~10Kトークン | 中程度の複雑さ |
| 高 | ~25Kトークン | 深い解析、複雑なコード |
MCP統合
IDAssistは外部MCPサーバーに接続してツール拡張型LLM対話を行うことができ、モデルはプログラム的に関数を検査、逆アセンブルを読み取り、相互参照を照会、推論中にIDBを変更できます。URLベースのMCPサーバー(SSEまたはStreamable HTTP)と、ローカルCLIコマンドから起動するstdioベースのMCPサーバーの両方をサポートします。また、IDAssistは外部MCPサーバーを必要とせずに関数呼び出しを行うための組み込み内部ツールも提供します。
関数呼び出し
ツール呼び出しをサポートするLLMプロバイダーは、会話中にIDA解析関数を呼び出し、手動介入なしで反復調査を可能にします。
RLHFフィードバック
説明やクエリ応答に対して賛成/反対のフィードバックを提供します。フィードバックはローカルに保存され、プロンプトエンジニアリングやモデル選択の改善に使用できます。
アーキテクチャ
IDAssistはMVC(Model-View-Controller)パターンに従います:
- ビュー (
src/views/) — ユーザー操作時にシグナルを発するPySide6タブウィジェット - コントローラー (
src/controllers/) — ビューシグナルをサービスコールに接続、状態管理 - サービス (
src/services/) — ビジネスロジック、LLMプロバイダー、データベースアクセス、グラフ解析 - 内部ツール (
src/services/internal_tools.py) — LLM関数呼び出しのためのIDA固有ツール定義 - グラフツール (
src/services/graphrag/graphrag_tools.py) — LLM対話のためのセマンティックグラフ読み取り/書き込みツール
主要な設計原則:
- すべてのIDA API呼び出しは
execute_on_main_thread()を介してメインスレッドで実行されます - LLM応答はUIにインクリメンタルにストリーミングされます
- 永続化のためのローカルSQLiteデータベース(外部データベース不要)
- スレッドセーフな初期化を備えたシングルトンサービスレジストリ
クイックスタート
-
プラグインのインストール(推奨 — IDAプラグインマネージャー):
hcli plugin install idassistこれにより、プラグインとそのPython依存関係がIDAの環境に自動的にインストールされます。
-
または手動インストール(リリースtarballから):
最新のリリースzipをGitHub Releasesからダウンロードし、IDAプラグインディレクトリに展開します:
Linux / macOS:
unzip IDAssist-*.zip -d ~/.idapro/plugins/Windows: zipを
%APPDATA%\Hex-Rays\IDA Pro\plugins\に展開します。次に、IDAにバンドルされたPython(システムのPythonではなく)を使用して依存関係をインストールします:
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssist/requirements.txtWindows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssist\requirements.txt"<IDA_INSTALL_DIR>をIDA Proのインストールパス(例:/opt/idapro-9.0またはC:\Program Files\IDA Pro 9.0)に置き換えてください。ヒント:
IDAUSR環境変数を、plugins/サブディレクトリを含むカスタムディレクトリに設定することもできます。 -
IDAssistを開く: IDA Proを起動し、バイナリを開き、
Ctrl+Shift+A(または編集 > プラグイン > IDAssist)を押します。 -
プロバイダーを設定: 設定タブに移動し、LLMプロバイダーの下にある追加をクリックし、希望のプロバイダーを設定します。
-
関数を解析: 任意の関数に移動し、説明タブをクリックし、関数を説明を押します。
詳細なセットアップ手順については、はじめにを参照してください。
LLMプロバイダーの設定
IDAssistは以下のプロバイダータイプをサポートします:
| タイプ | 認証方法 | 備考 |
|---|---|---|
anthropic_platform | APIキー | Anthropic API直接 |
anthropic_oauth | OAuth(ブラウザ) | ブラウザベースの認証 |
anthropic_claude_cli | ローカルCLI | claude CLIバイナリを使用 |
bedrock | AWS認証情報 | AWS Bedrock Converse API直接 |
openai_platform | APIキー | OpenAI API直接 |
openai_oauth | OAuth(ブラウザ) | ブラウザベースの認証 |
ollama | なし(ローカル) | 自己ホスト型モデル |
litellm | プロキシURL | マルチプロバイダープロキシ |
推奨モデル
| プロバイダー | モデル | 強み |
|---|---|---|
| Anthropic | claude-sonnet-4-6 | 強力なコード解析、拡張思考 |
| OpenAI | gpt-5.3-codex | 高速、優れた一般的な解析 |
| Ollama | qwen2.5-coder:32b | ローカル、APIキー不要 |
セマンティックグラフの使用
セマンティックグラフタブはバイナリのナレッジグラフを提供します:
- バイナリの再インデックス — 関数構造、コールグラフ、相互参照を抽出
- セマンティック解析 — 各関数のLLM要約を生成
- セキュリティ解析 — 脆弱性パターンとセキュリティ関連APIを検出
- ネットワークフロー — コールグラフ全体のネットワーク操作を追跡
- コミュニティ検出 — 関連する関数をモジュールにグループ化
グラフはリストビュー(呼び出し元、呼び出し先、エッジ、フラグ)、ビジュアルグラフ(Nホップ展開可能なインタラクティブノード図)、または検索(セマンティック検索、類似関数、呼び出しコンテキストを含む7つのクエリタイプ)で探索します。
コンテキストメニューアクション
逆アセンブルビューまたは疑似コードビューで右クリックしてアクセス:
| アクション | ホットキー | 効果 |
|---|---|---|
| 関数の説明 | Ctrl+Shift+E | 説明タブを開き説明を生成 |
| 選択範囲について質問 | Ctrl+Shift+Q | #funcコンテキストでクエリタブを開く |
| リネーム提案 | — | アクションタブを開き提案を生成 |
要件
- IDA Pro 9.0+(Python 3およびPySide6対応)
- Hex-Raysデコンパイラ(疑似コード機能に推奨)
requirements.txtに記載されたPythonパッケージ
ドキュメント
- ドキュメントインデックス
- はじめに
- タブリファレンス: 説明 | クエリ | アクション | セマンティックグラフ | RAG | 設定
- ワークフロー: 説明 | クエリ | セマンティックグラフ
ホームページ
ライセンス
詳細についてはLICENSEファイルを参照してください。