buzzer-re/Rikugan
A reverse-engineering agent for IDA Pro and Binary Ninja
Rikugan (六眼) – AI搭載リバースエンジニアリングアシスタント
概要 – Rikuganは、IDA ProまたはBinary Ninja内で動作するプラグイン/エージェントです。大規模言語モデル (LLM) を逆アセンブラのUIに直接組み込み、モデルと対話しながら分析タスクを実行できます。LLMは推論エンジンとして機能し、Rikuganは60種類以上の組み込み「ツール」(例:関数への移動、クロスリファレンスのクエリ、デコンパイル、型編集、スクリプト実行)をオーケストレーションし、ユーザーの代わりに呼び出します。
仕組み –
- エージェントはジェネレーターベースのターンループを実行します。ユーザーのメッセージがストリーミングされたLLM応答をトリガーし、モデルが tool-call トークンを出力すると、Rikuganがそれをインターセプトして対応する内部ツールを実行し、結果をモデルにフィードバックします。
- オーケストレーターは、まずバイナリ(インポート、エクスポート、文字列、主要関数)をマッピングし、並行して動作する分離されたサブエージェントを生成して、後でその結果を統合できます。
- コンテキスト(関数リスト、デコンパイラの出力、ILなど)がモデルに供給されるため、モデルはバイナリについて推論でき、エージェントはデータベースの横にある
RIKUGAN.mdファイルにメモを永続化できます。
主な機能
| 機能 | 内容 |
|---|---|
| 60種類以上の分析ツール | ナビゲーション、デコンパイラクエリ、文字列抽出、型注釈、IL/マイクロコード編集、スクリプト実行など。すべてのツールは実行前にユーザーの明示的な承認が必要です。 |
| 自然言語パッチ (実験的) | 平易な英語で変更内容を記述 (/modify …) すると、Rikuganが関連コードを特定し、パッチを生成して適用します。 |
| 難読化解除 (実験的、Binary Ninjaのみ) | 制御フローの平坦化、不透明述語、MBA、ジャンクコードを検出し、IL書き込みによってそれらを除去する専用スキル。典型的な手動の難読化解除時間を約3分の1に短縮します。 |
| 並列サブエージェント | オーケストレーターは複数の分離されたエージェントを起動してバイナリの異なる部分を同時に探索し、統合レポートを作成できます。 |
| プロファイル | LLMが読み取れるデータや呼び出せるツールの詳細な設定、およびカスタムルールの定義。 |
| LLMプロバイダー非依存 | Anthropic Claude、MiniMax、Gemini、Kimi、オープンソースモデル (LLAMA-70B, GPT-120B)、OpenAI互換エンドポイント、ローカルのOllamaサーバーで動作します。 |
| MCP統合 | Claude CodeのMCPエコシステムのスキルやサーバーを再利用可能ですが、外部のMCPクライアントには依存しません。 |
| 永続メモリ | 発見事項は RIKUGAN.md に保存され、次回のセッションで再読み込みされます。 |
インストール – 1行のスクリプトでIDA、Binary Ninja、またはその両方を検出します:
# Linux/macOS
curl -fsSL https://raw.githubusercontent.com/buzzer-re/Rikugan/main/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/buzzer-re/Rikugan/main/install.ps1 | iex
RikuganはIDAにバンドルされているPySide6/Shiboken Qtバインディングに依存しているため、Windowsユーザーは最新のVisual C++ Redistributable 2015-2022 (x64)もインストールする必要があります。
一般的なワークフロー
- IDA ProまたはBinary Ninjaでバイナリを開きます。
- Ctrl+Shift+I を押すと、チャットペインが表示されます。
- 自然言語で質問(例:「この関数は何をしますか?」)したり、コマンド (
/deobfuscation,/modify …) を発行したりします。 - RikuganがLLMの回答をストリーミングし、要求されたツールを呼び出し、結果をUIに直接返します。
- 生成された
RIKUGAN.mdを確認して、洞察の永続的な記録を残します。
対象ユーザー – リバースエンジニア、マルウェアアナリスト、脆弱性研究者、またはIDA Pro/Binary Ninjaを既に使用しており、逆アセンブラを離れることなくナビゲーション、注釈、難読化解除をAIで加速したい方。
制限事項 / 注意事項
- パッチおよび難読化解除機能は実験的であり、結果は手動で検証する必要があります。
- エージェントはターゲットバイナリを実行することはありませんが、ユーザーが承認したスクリプトをホスト内で実行するため、侵害されたスクリプトがホスト環境に影響を与える可能性があります。
- 互換性のあるLLMプロバイダーとインターネット接続(またはローカルのOllamaサーバー)が必要です。パフォーマンスと回答の品質は選択したモデルに大きく依存します。
- macOS/ARM64 IDA ProとPython 3.14の組み合わせでは、既知のShibokenのuse-after-freeバグがあります。安全のためPython 3.10の使用を推奨します。
重要性 – Rikuganは、大規模言語モデルを低レベル分析ツールに直接組み込めることを示しており、従来の手作業による行単位のリバースエンジニアリングプロセスを、インタラクティブな対話型体験へと変革します。自然言語を通じて豊富なツールボックスを公開することで、難読化解除やバイナリパッチなどの複雑なタスクの障壁を下げつつ、アナリストが制御を維持できるようにします。
リンク
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト