
एजेंटिक रिवर्स इंजीनियरिंग IDE, जिसमें बाइनरी विश्लेषण और CTF कार्य के लिए शुद्ध-Rust मल्टी-आर्किटेक्चर डिसअसेंबलर, नेटिव डीकंपाइलर, डीबगर और LLM एजेंट शामिल है।
एजेंटिक रिवर्स इंजीनियरिंग वातावरण — "रिवर्स इंजीनियरिंग के लिए Cursor" की भावना में एक Ghidra-श्रेणी का डेस्कटॉप ऐप। Tauri 2 (React + TypeScript फ्रंटएंड) के साथ एक प्लग करने योग्य विश्लेषण बैकएंड के ऊपर बनाया गया। डिफ़ॉल्ट एक शुद्ध-Rust नेटिव इंजन है — कोई बाहरी प्रक्रिया नहीं, कोई copyleft निर्भरता नहीं, Capstone के माध्यम से बहु-आर्किटेक्चर। आप r2 (radare2) या IDA Pro के माध्यम से भी विश्लेषण चला सकते हैं: इनमें से कोई भी इंजन चुनें, और पूरा ऐप — एजेंट टूल्स और UI — उसे ही चलाता है। एजेंट टूल और UI बैकएंड-अज्ञेय हैं — देखें docs/backends.md।

रूट पर Cargo वर्कस्पेस; डेस्कटॉप ऐप उसमें एक पैकेज है।
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 में रहता है, इसलिए एजेंट ऐसा कोई सिस्टम कोड शामिल नहीं करता जिसका
वह उपयोग नहीं करता। कोई भी crate Tauri पर निर्भर नहीं है, और प्रत्येक स्वतंत्र रूप से बनता/परीक्षण होता है;
recurse-eval एजेंट को हेडलेस रूप से चलाता है। सभी workspace सदस्य हैं, इसलिए एक
Cargo.lock और एक target/ पूरे रेपो को कवर करते हैं।
Ctrl+L से टॉगल करें)checksec नहीं), और विश्लेषण गणनाएँundefinedN सेल को प्रकार देने के लिए उस पर क्लिक करें। आपके द्वारा सेट किया गया रिटर्न प्रकार हेडर की
सिग्नेचर लाइन में दिखाया जाता है। दोनों SQLite में बने रहते हैं, फ़ंक्शन द्वारा कुंजीबद्ध, और किसी सेल को साफ़ करने पर
वह वापस उसी पर लौट आती है जो निर्देश कहते हैं/clear और पुनः खोलने के बाद भी बने रहते हैं, और अगले सत्र को सीड करते हैंrecurse-agent) प्रति-टर्न डीबग ट्रेसिंग के साथ; वही एजेंट लूप
UI में और eval harness में चलता हैlift ऑप: किसी फ़ंक्शन को VTIL-शैली के de-obfuscation IL में उठाता है और उस पर
पूरे-रूटीन propagation/folding/dead-code-elimination/branch-resolution
पास चलाता है — उपयोगी जब disassembly किसी VM dispatcher या
opaque-predicate श्रृंखला जैसी दिखे (देखें docs/vtil-lift.md)decompile उसी recurse-vtil
पाइपलाइन से C-जैसा pseudocode (if/while
संरचना, कुल निर्देश कवरेज) प्रस्तुत करता है — कोई बाहरी टूल नहीं, r2 की आवश्यकता नहींrecurse-mcp सर्वर: किसी भी
MCP-सक्षम एजेंट (Claude Code, Cursor, Claude Desktop, …) के लिए MCP stdio पर वही Engine — कोई Tauri नहीं, कोई
IDA सीट नहीं, कोई Python ब्रिज नहीं (देखें docs/recurse-mcp.md)विश्लेषण एक ही Engine trait (crates/recurse-static/src/engine.rs) से होकर जाता है, इसलिए
इंजन एक विकल्प है, कोई कठोर निर्भरता नहीं:
native (डिफ़ॉल्ट) — शुद्ध-Rust ELF/PE/Mach-O पार्सिंग और बहु-आर्किटेक्चर disassembly
(object + capstone): x86/x86-64, ARM, AArch64, MIPS, PowerPC, RISC-V, SPARC, SystemZ,
M68K, BPF। कोई चाइल्ड प्रोसेस नहीं, कोई बाहरी टूल नहीं, बिल्ड में कोई LGPL नहीं। इसमें एक decompiler
(recurse-vtil की lift → optimize → structure पाइपलाइन — देखें
docs/vtil-lift.md) और VTIL-शैली de-obfuscation के लिए एक lift ऑप शामिल है।ida) — idat के माध्यम से opt-in हेडलेस विश्लेषण और Hex-Rays decompilation।मेनू सेटिंग्स, RECURSE_BACKEND पर्यावरण चर, या संग्रहीत
कॉन्फ़िग से चुनें। एजेंट को एक बैकएंड-न्यूट्रल analyze टूल मिलता है (functions, disasm, graph,
lift, decompile, xrefs, strings, imports, info, साथ ही इंजन कंसोल के लिए raw) —
जिसे सक्रिय इंजन वास्तव में जिन ऑप्स का समर्थन करता है, उन्हीं तक फ़िल्टर किया जाता है, इसलिए raw (native में कोई कंसोल नहीं होता) केवल
तब विज्ञापित होता है जब उपलब्ध हो। UI कैनोनिकल परिणाम प्रकारों का उपभोग करता है, किसी भी इंजन के JSON का नहीं।
trait, crate चयन, और लाइसेंसिंग
तर्क के लिए docs/backends.md देखें। बड़ी बाइनरी खोलना तेज़ है क्योंकि विश्लेषण lazy है — डिस्कवरी फ़ंक्शंस को सस्ते में इंडेक्स करती है और बेसिक ब्लॉक केवल तब डिकोड होते हैं जब किसी फ़ंक्शन को देखा जाता है; देखें
docs/lazy-analysis.md।
IDA/Ghidra पर MCP सर्वर टाँकना, या CLI एजेंट में डिसअसेम्बली पेस्ट करना, 5-फ़ंक्शन वाले CTF के लिए काम करता है और असली बाइनरी पर विफल हो जाता है। Recurse एक उद्देश्य-निर्मित वातावरण है, चैटबॉट रैपर नहीं: