
بيئة تطوير متكاملة للهندسة العكسية الوكيلة مع مفكك تجميع متعدد المعماريات مكتوب بلغة Rust خالصة، ومفكك شيفرة أصلي، ومنقّح، ووكيل LLM لتحليل الملفات الثنائية وأعمال CTF.
بيئة هندسة عكسية قائمة على الوكلاء — تطبيق سطح مكتب من فئة Ghidra بروح "Cursor للهندسة العكسية". مبني باستخدام Tauri 2 (واجهة أمامية بـ React + TypeScript) فوق خلفية تحليل قابلة للتوصيل. الافتراضي هو محرك أصلي بلغة Rust خالصة — بلا عملية خارجية، بلا اعتماد على copyleft، متعدد المعماريات عبر Capstone. يمكنك أيضًا تشغيل التحليل عبر r2 (radare2) أو IDA Pro: اختر أي محرك، وسيقوده التطبيق بأكمله — أدوات الوكيل والواجهة — بدلًا من ذلك. أداة الوكيل والواجهة مستقلتان عن الخلفية — راجع 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 الوكيل بدون واجهة. جميعها أعضاء في مساحة العمل، لذا يغطي Cargo.lock واحد وtarget/ واحد المستودع بأكمله.
Ctrl+L)checksec خارجي)، وإحصاءات التحليلundefinedN لإعطائه نوعًا. يظهر نوع الإرجاع الذي تحدده في سطر
التوقيع في الترويسة. يبقى كلاهما محفوظًا في SQLite، مرتبطًا بالدالة، ومسح خلية يعيدها
إلى ما تقوله التعليمات/clear وإعادة الفتح، وتُغذّي الجلسة التاليةrecurse-agent) مع تتبع تصحيح لكل دور؛ تعمل حلقة الوكيل نفسها
في الواجهة وفي أداة التقييمlift: ترفع دالة إلى لغة وسيطة (IL) لإزالة التشويش بأسلوب VTIL وتشغّل
تمريرات الانتشار/الطي/إزالة الكود الميت/حل التفرعات على الروتين بأكمله
— مفيدة عندما يبدو التفكيك كموزّع آلة افتراضية أو
سلسلة مسندات معتمة (انظر docs/vtil-lift.md)decompile شيفرة زائفة شبيهة بـ C (بنيوية if/while،
وتغطية كاملة للتعليمات) من خط أنابيب recurse-vtil نفسه
— دون أداة خارجية، ودون الحاجة إلى r2recurse-mcp مستقل: نفس Engine عبر MCP stdio لأي
وكيل يدعم MCP (Claude Code، Cursor، Claude Desktop، …) — دون Tauri، ودون
مقعد IDA، ودون جسر Python (انظر docs/recurse-mcp.md)يمر التحليل عبر سمة Engine واحدة (crates/recurse-static/src/engine.rs)، لذا فإن
المحرك خيار، وليس تبعية إلزامية:
native (افتراضي) — تحليل ELF/PE/Mach-O بلغة Rust خالصة وتفكيك متعدد المعماريات
(object + capstone): x86/x86-64، ARM، AArch64، MIPS، PowerPC، RISC-V، SPARC، SystemZ،
M68K، BPF. لا عملية فرعية، ولا أداة خارجية، ولا LGPL في البناء. يتضمن مفككًا
(خط أنابيب الرفع → التحسين → البنية في recurse-vtil — انظر
docs/vtil-lift.md) وعملية lift لإزالة التشويش بأسلوب VTIL.ida) — تحليل بدون واجهة وتفكيك Hex-Rays اختياريًا عبر idat.اختر من قائمة الإعدادات، أو متغير البيئة RECURSE_BACKEND، أو الإعدادات
المخزّنة. يحصل الوكيل على أداة analyze واحدة محايدة تجاه الواجهة الخلفية (functions، disasm، graph،
lift، decompile، xrefs، strings، imports، info، بالإضافة إلى raw لوحدة تحكم المحرك) —
مُفلترة على العمليات التي يدعمها المحرك النشط فعليًا، لذا فإن raw (لا يملك المحرك الأصلي وحدة تحكم) لا
يُعلن عنه إلا عند توفره. تستهلك واجهة المستخدم أنواع النتائج القياسية، وليس JSON أي محرك.
راجع docs/backends.md للاطلاع على السمة، وخيارات الحزم، ومبررات
الترخيص. فتح ملف ثنائي كبير سريع لأن التحليل كسول — فالفهرسة تُفهرس
الدوال بتكلفة زهيدة، ولا تُفكَّك الكتل الأساسية إلا عند عرض دالة؛ راجع
docs/lazy-analysis.md.
إن ربط خادم MCP بـ IDA/Ghidra، أو لصق التفكيك في وكيل سطر أوامر، ينجح مع تحديات CTF ذات 5 دوال وينهار مع الملفات الثنائية الحقيقية. إن Recurse بيئة مبنية لغرض محدد، وليست غلافًا لدردشة آلية:
pdF إلى السياق في كل دور، ولا 0x401023s مُختلقة.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"