CTF思路
点击放大

Agentic reverse engineering en — a Ghidra-class desktop app in the spirit of
"Cursor for reverse engineering". Built with Tauri 2 (React + TypeScript frontend) on top
of a pluggable analysis backend. The default is a pure-Rust nati — no
external process, no copyleft dependency, multi-architecture . You can also run
analysis through r2 (radare2) or IDA Pro: select either engine, and the whole app —
agent tools and UI — drives it instead. The agent tool and the UI are backend-agnostic —
see docs/backends.md.
!Recurse demo
Cargo workspace at the root; the desktop app is one package in it.
recurse-agent is only the agent; static analysis lives in recurse-static and the
debugger in recurse-debug, so the agent pulls in neither systems code it does
not use. No crate depends on Tauri, and each builds/tests standalone;recurse-eval drives the agent headlessly. All are workspace members, so oneCargo.lock and one target/ cover the whole repo.
Ctrl+L)checksec), and analysis countsundefinedN cell to give it a type. A return type you set is shown in the header's/clear and reopen, and seed the next sessionrecurse-agent) with per-turn debug tracing; the same agent loop runslift op: raises a function into a de-obfuscation IL and runsdecompile renders C-like pseudocode (if/whilerecurse-vtilrecurse-mcp server: the same Engine over MCP stdio for anyAnalysis goes through a single Engine trait (crates/recurse-static/src/engine.rs), so the
engine is a choice, not a hard dependency:
native (default) — pure-Rust ELF/PE/Mach-O parsing and multi-architecture disassemblyobject + capstone): x86/x86-64, ARM, AArch64, MIPS, PowerPC, RISC-, SystemZ,recurse-vtil's lift → optimize → structure pipeline — seelift op for de-obfuscation.ida) — opt-in headless analysis and Hex-Rays decompilation via idat.Pick with the settings menu, the RECURSE_BACKEND en , or the stored
config. The agent gets one backend-neutral analyze tool (functions, disasm, graph,lift, decompile, xrefs, strings, imports, info, plus raw for the engine console) —
filtered to the ops the acti actually supports, so raw (native has no console) is
only ad when a. The UI consumes canonical result types, not any engine's JSON.
See docs/backends.md for the trait, the crate choices, and the licensing
rationale. Opening a large binary is fast because analysis is lazy — discovery indexes
functions cheaply and basic blocks decode only when a function is ; see
docs/lazy-analysis.md.
Stapling an MCP server onto IDA/Ghidra, or pasting disassembly into a CLI agent,
works for 5-function CTFs and falls apart on real binaries. Recurse is a
purpose-built en, not a chatbot wrapper:
pdF dumps into context every turn, no in 0x401023s.npm test — is| Tool | (tested) | Install |
| -------- | ------------------ | ----------------------------------------------------------------------- |
| Node.js | ≥ 20 (23.11 used) | or nvm |
| npm | ≥ 10 | ships with Node.js |
| Rust | ≥ 1.77 (1.97 used) | |
| cargo | — | ships with Rust (rustup) |
:
The default native engine is pure Rust — nothing to install. To use r2 (radare2)
as the analysis engine instead, install it and select it (the settings menu, orRECURSE_BACKEND=r2); Recurse drives the r2 binary on your PATH. r2 is optional, is
ne by the build, and is ne with Recurse — bring your own install.
To use IDA Pro (ida), select it or set RECURSE_BACKEND=ida (tested on Linux with IDA Pro 9.1). It is auto-detected from standard install paths or PATH. For custom paths, set 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").
Debian/Ubuntu/Pop!_OS:
Other distros: follow the official
Tauri prerequisites.
All engines provide one: native renders pseudocode via recurse-vtil
(lift → optimize → structure — see docs/.md),
nothing to install; r2 can provide its own decompiler when its plugin
is installed; IDA Pro provides Hex-Rays.
App dependencies live in tauri/; Rust comes from the workspace root. just wraps
both (see just --list), or drive them directly.
This starts the Vite de and launches the Tauri window. First compile takes a
while (Rust build); subsequent ones are fast.
The bundle lands in target/release/bundle/ (workspace target):
.deb / .rpm / .AppImage for Linuxtarget/release/recurseOn Arch and other rolling distros the AppImage step needs a one-time local fix
(upstream linuxdeploy lags the distro toolchain) — see
docs/linux-appimage-build.md.
Equi direct commands: cargo clippy --workspace --all-targets,cargo test --workspace at the root; npm run lint / npm run format /npm run build inside tauri/.
The agent is e headlessly against crackme tiers (seecrates/recurse-e.md). Tiers are YAML:
selection filters over the dataset, or a frozen hexid list, plus run knobs.
e is a binary, not a test, so cargo test ne money or time on
the agent. Endpoint + key go in crates/recurse-eval/.env (copy .en).
Each run writes target/e/<tier>/<backend>/run.log (the full narrative)
plus one <hexid>.json per task with the complete per-turn con. The
backend (native, r2, or ida) is selectable per run — see the e.
The agent chat panel runs on any OpenAI-compatible endpoint. Configure the API key,
base URL, and model from the in-app Model & Provider dialog (persisted in~/.recurse/recurse.db), or via env:
Point the agent at any local or self-hosted OpenAI-compatible server — Ollama, LM
Studio, llama.cpp's llama-server, vLLM, text-generation-webui, or a remote gateway.
Set the Base URL in the dialog (a bare base URL or a full /chat/completions
route both work) and pick a model from that server's catalog, or type a model id
(llama3.1:8b, qwen2.5-coder, …) directly:
Local endpoints need no API key: when the key is blank the request is sent with noAuthorization header, and the model list is read from the endpoint's own{base}/models. A custom endpoint is treated as configured without a key, so the
chat works out of the box against a local server.
Without credentials it falls back to an echo client so the wiring stays exercisable.
The agent sees li context (arch, bits, type) and can drive the full analysis
surface (disassembly, xrefs, strings, imports, decompilation) through the session.
Apache-2.0 — © 2026 Aayush Khanna
开发语言:Rust
Star 数:285
该项目属于CTF思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕AI Native IDE for reverse engineering展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | recurse - AI Native IDE for reverse engineering |
| 所属分类 | CTF思路 |
| 发布作者 | admin |
| 发布时间 | 2026-10-05 23:44:24 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 379 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |