
バイナリ解析とCTF作業のための、純粋なRust製マルチアーキテクチャ逆アセンブラ、ネイティブ逆コンパイラ、デバッガ、およびLLMエージェントを備えたエージェント型リバースエンジニアリングIDE。
エージェント型リバースエンジニアリング環境 — 「リバースエンジニアリングのための Cursor」の精神で作られた Ghidra クラスのデスクトップアプリ。Tauri 2(React + TypeScript フロントエンド)で構築され、プラグイン可能な解析バックエンドの上に成り立っています。デフォルトは純粋な Rust 製ネイティブエンジン — 外部プロセスなし、コピーレフト依存なし、Capstone によるマルチアーキテクチャ対応。r2(radare2)や IDA Pro を介して解析を実行することもできます。どちらかのエンジンを選択すれば、アプリ全体 — エージェントツールと UI — がそれに切り替わります。エージェントツールと UI はバックエンド非依存です — docs/backends.md を参照してください。

ルートに Cargo ワークスペースがあり、デスクトップアプリはその中の 1 パッケージです。
tauri/ desktop app (Tauri + React)
src/ React frontend
src-tauri/ Tauri Rust backend (engine sessions, agent wiring)
package.json app scripts (Vite, Vitest, Tauri CLI)
crates/
recurse-agent/ agent framework: LLM loop, tool runtime, SQLite memory
recurse-static/ static analysis: ELF/PE/Mach-O parsing, multi-arch disassembly,
CFG and cross-reference recovery, the engine seam
recurse-vtil/ VTIL-inspired de-obfuscation/de-virtualization IL, lifter, optimizer
recurse-mcp/ standalone headless MCP server (stdio) over the engine — no Tauri, no IDA
recurse-debug/ cross-platform debugger (ptrace/Mach/Win32, breakpoints, stepping)
recurse-eval/ headless eval harness (YAML-configured tiers)
justfile single entry point for both halves
recurse-agent はエージェントのみです。静的解析は recurse-static に、デバッガは recurse-debug にあるため、エージェントは使用しないシステムコードを取り込みません。Tauri に依存するクレートはなく、それぞれが単独でビルド/テストできます。recurse-eval はエージェントをヘッドレスで駆動します。すべてワークスペースメンバーであるため、1つの Cargo.lock と1つの target/ がリポジトリ全体をカバーします。
Ctrl+L で切り替え)checksec は不要)、および解析カウントundefinedN セルをクリックして型を付与します。設定した戻り値の型はヘッダーの
シグネチャ行に表示されます。どちらも関数をキーとして SQLite に永続化され、セルをクリアすると
命令が示す内容に戻ります/clear や再オープンを経ても保持され、次のセッションのシードになりますrecurse-agent)。同じエージェントループが
UI と評価ハーネスの両方で実行されますlift オペレーション: 関数を VTIL スタイルの難読化解除 IL に持ち上げ、
ルーチン全体にわたる伝播/畳み込み/デッドコード除去/分岐解決の
パスを実行します — 逆アセンブリが VM ディスパッチャや
不透明述語チェーンに見える場合に有用です(docs/vtil-lift.md を参照)decompile は同じ recurse-vtil
パイプラインから C ライクな擬似コード(if/while の構造化、全命令カバレッジ)を
レンダリングします — 外部ツール不要、r2 も不要recurse-mcp サーバー: 任意の MCP 対応エージェント(Claude Code、Cursor、Claude Desktop など)向けに
同じ Engine を MCP stdio 経由で提供 — Tauri 不要、IDA ライセンス不要、
Python ブリッジ不要(docs/recurse-mcp.md を参照)解析は単一の Engine トレイト(crates/recurse-static/src/engine.rs)を経由するため、
エンジンは選択肢であり、ハードな依存関係ではありません:
native(デフォルト) — 純粋な Rust による ELF/PE/Mach-O 解析とマルチアーキテクチャ逆アセンブリ
(object + capstone): x86/x86-64、ARM、AArch64、MIPS、PowerPC、RISC-V、SPARC、SystemZ、
M68K、BPF。子プロセスなし、外部ツールなし、ビルドに LGPL なし。逆コンパイラ
(recurse-vtil の lift → optimize → structure パイプライン —
docs/vtil-lift.md を参照)と、VTIL スタイルの難読化解除のための lift オペレーションを含みます。ida) — idat を介したオプトインのヘッドレス解析と Hex-Rays 逆コンパイル。設定メニュー、RECURSE_BACKEND 環境変数、または保存された設定で選択します。エージェントはバックエンドに依存しない単一の analyze ツール(functions、disasm、graph、lift、decompile、xrefs、strings、imports、info、およびエンジンコンソール用の raw)を利用できます。これはアクティブなエンジンが実際にサポートする操作に絞り込まれるため、raw(ネイティブにはコンソールがない)は利用可能な場合にのみ公開されます。UI はどのエンジンの JSON でもなく、正規化された結果型を消費します。トレイト、クレートの選択、ライセンスの根拠については docs/backends.md を参照してください。大きなバイナリを開くのが高速なのは、解析が遅延評価であるためです。ディスカバリは関数を低コストでインデックス化し、基本ブロックは関数が表示されたときにのみデコードされます。詳細は docs/lazy-analysis.md を参照してください。
IDA/Ghidra に MCP サーバーを接続したり、逆アセンブリを CLI エージェントに貼り付けたりする方法は、5 関数程度の CTF には通用しますが、実際のバイナリでは破綻します。Recurse はチャットボットのラッパーではなく、目的に特化して構築された環境です:
pdF のダンプをコンテキストに再パースする必要も、存在しない 0x401023 を捏造する必要もありません。npm test がありません。検証は視覚的に行います。エージェントによるリネームは関数リスト、グラフ、逆コンパイルに即座に反映されるため、人間はワンクリックで承認または却下できます。macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/Recurse-Labs/recurse/master/scripts/install.sh | sh
Windows (PowerShell):
powershell -c "irm https://raw.githubusercontent.com/Recurse-Labs/recurse/master/scripts/install.ps1 | iex"
各スクリプトは、お使いの OS/アーキテクチャ向けの正しいバンドルを
最新リリースから取得し、
ネイティブにインストールします(Linux では .deb/.rpm/.AppImage、macOS では .dmg → /Applications、
Windows では .msi/.exe)。手動でダウンロードしたい場合は、
Releases ページからお使いのプラットフォーム向けの
アセットを取得してください。
インストール後は、Recurse が自動的に更新されます — 新しいバージョンのために再インストールする必要はありません。起動時に アップデートを確認し、設定メニューからワンクリックで 「vX.Y.Z に更新」 を提供します。詳細は docs/updating.md を参照してください。代わりにソースからビルドする場合は、 下記の前提条件までスキップしてください。
| ツール | バージョン(テスト済み) | インストール |
|---|---|---|
| Node.js | ≥ 20(23.11 を使用) | https://nodejs.org または nvm |
| npm | ≥ 10 | Node.js に同梱 |
| Rust | ≥ 1.77(1.97 を使用) | https://rustup.rs |
| cargo | — | Rust(rustup)に同梱 |
確認:
node --version && npm --version && rustc --version && cargo --version
デフォルトの native エンジンは純粋な Rust 製で、インストールは不要です。代わりに r2(radare2)を解析エンジンとして使用するには、r2 をインストールして選択します(設定メニュー、または RECURSE_BACKEND=r2)。Recurse は PATH 上の r2 バイナリを操作します。r2 はオプションであり、ビルドで必須になることはなく、Recurse に同梱されることもありません。ご自身でインストールしてください。
IDA Pro(ida)を使用するには、それを選択するか RECURSE_BACKEND=ida を設定します(Linux 上の IDA Pro 9.1 でテスト済み)。標準のインストールパスまたは PATH から自動検出されます。カスタムパスの場合は RECURSE_IDA_PATH を設定します(Linux: export RECURSE_IDA_PATH=/opt/ida-pro-9.1、Windows: set RECURSE_IDA_PATH="C:\Program Files\IDA Pro 9.1")。