Files
rea/docs/readme/README_ar.md
c1fd496e6a feat(kuna): serve procedures, pseudocode and assembly from Kuna exports (#3854)
* feat(kuna): serve procedures, pseudocode and assembly from Kuna exports

Register Kuna as a bring-your-own deep-analysis provider. It answers
list_documents, list_procedures, search_procedures, procedure_address,
address_name, procedure_pseudo_code, procedure_assembly and
analyze_function (and batch_decompile through composition) from the
verified project export. While a cold export builds in the background,
pseudocode comes from a single-function `kuna decompile` run on a private
copy and says so; assembly and data names wait for the export.

Each answer records its source and file span in raw_result, limitations
are scoped per operation, and the session-owned export is stopped on
close unless another session still waits for it. The literal/regex
procedure search predicate moves from the IDA runner into a shared
domain helper. `npm run verify:kuna` adds a real-provider lane with an
optional Ghidra comparison.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): refuse a Ghidra comparison without caller-built targets

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): retry owned cleanup and keep answers bound to the opened Kuna

- Re-verify the Kuna executable's digest before every launch (memoized by
  file identity), so no answer names one build while another produced it.
- Keep the process supervisor of an unproven stop, and retry it on every
  later close in both the session and the cache; a failed close keeps
  failing until the stop is proven instead of reporting success.
- Report an abandoned export's retained cleanup from session close.
- Forget and rebuild an adopted export whose files another REA process
  evicted, instead of failing every later read.
- Close a private copy whose setup failed, and retry failed removals.
- Let the session own the shared quick inventory; each caller only stops
  waiting when it cancels.
- Report a failed export as `failed` with its reason.
- Lane: release the MCP client when open_binary rejects a target, and accept
  either valid source for the first answer.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): drain session requests before releasing workspaces

Combine caller cancellation with session shutdown and wait for active reads before releasing their process supervisors or private inputs. Retain unproven cleanup for later close attempts. Measure UTF-8 reply bytes without implying model token usage.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* perf(kuna): keep document metadata reads free of target analysis

Listing the selected path no longer initializes the project cache or starts an export that the request never consumes.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): reject verification matrices with missing functions

Validate requested matrix coverage before building the fixture or opening providers. Empty matrices, unmatched names and partially matched function sets must fail instead of reporting an unperformed comparison as successful.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): retain component provenance in function dossiers

Record each source facet as one file span and preserve both pseudocode and assembly digests/ranges in combined reports. Keep direct text source fields compatible and verify every combined span through the real MCP lane.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): keep retired file cleanup bound to its export

Retain the export key with each failed file removal so a cancelled session reports and retries its own stopped resources. Preserve that association across sweeping and process-cleanup recovery without attributing unrelated cache failures to the session.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* docs(kuna): document the Kuna provider and list it in the catalog (#3855)

* docs(kuna): document the Kuna provider and list it in the catalog

Add the Kuna provider guide (configuration, answered tools, cold and warm
paths, provenance, cache ownership, verification lane), link it from the
README and its translations, the CLI, installation and index pages and the
site navigation, describe `npm run verify:kuna` in the testing guide, credit
Kuna in THIRD_PARTY_NOTICES, teach the agent skill when to select Kuna, and
register its identity and operations in the generated product catalog.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): state the Linux cache fallback, raw_result scope and comparison inputs

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): note that cache pins hold within one REA process

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): describe retired staging and retried cleanup

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): supervise regex and bind reads to one export

Share a cancellable ECMAScript matching worker with Hopper while preserving its error contract. Bind C and assembly indexes to immutable project readers, retry whole dossiers after eviction, and enforce the existing buffered-text capacity before allocating cached spans. Document the verified Linux scope and keep complete exports accessible.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: N0zoM1z0 <161784452+N0zoM1z0@users.noreply.github.com>
Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-10-15 00:53:26 -07:00

27 KiB

English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano · Ελληνικά

REA: هندسة عكسية لأي شيء

خادم MCP واحد للهندسة العكسية للملفات الثنائية والتطبيقات والسلوك أثناء التشغيل.

وجدت ميزة تعجبك؟ افهم طريقة عملها حتى مستوى الشيفرة الثنائية.

npm version MCP tool catalog Node.js requirements skills.sh MIT license Discord

morluto%2Frea | Trendshift

الموقع · الأدلة · دراسات الحالة

البدء السريع · كيف يعمل REA · ما الذي يمكنك تحليله · دراسات الحالة · الأسئلة الشائعة · أدوات GNU objdump وRizin · التوثيق

npx rea-agents setup

Important

المصادر الرسمية لـ REA: morluto/rea, rea.tools, rea-agents (npm). استخدم روابط التثبيت والإصدارات المنشورة في هذه المصادر الرسمية. تشابه اسم المستودع أو نسخ ملف README لا يثبت أن التنزيل رسمي.


REA يشغّل جسر التحليل داخل Hopper لفحص ملف ثنائي للشيفرة الأصلية



Discord
انضم إلى مجتمع الهندسة العكسية

Discord · أسئلة وأجوبة · مشاركة النتائج


هل وجدت في تطبيق ميزة تريد إضافتها إلى منتجك؟ اطلب من وكيلك استقصاءها باستخدام REA. يستطيع فحص التطبيق من دون شيفرته المصدرية، وشرح طريقة عمل الميزة وعرض الأدلة، ثم بناء نسخة تناسب مشروعك.

يربط REA وكيلك بأدوات لفحص الملفات الثنائية للشيفرة الأصلية، وتطبيقات JavaScript وElectron، وتجميعات .NET، والمواقع. يمكنك أيضًا استخدام الأدوات نفسها من الطرفية. يجري التحليل محليًا، وتتضمن النتائج الأدلة والقيود التي تستند إليها كل خلاصة.

يسجّل الإعداد REA لدى وكيلك ويثبّت تعليمات سير العمل المطابقة. يمكن لتحليل الشيفرة الأصلية استخدام تثبيت موجود من Hopper أو Ghidra؛ ويمكن للإعداد أيضًا تثبيت Hopper اختياريًا بعد موافقتك. لا يحتاج التحليل الثابت لـ JavaScript إلى أي من المحركين.

زر موقع REA للاطلاع على تعليمات الإعداد والأدلة المصوّرة ودراسات الحالة الفعلية.

البدء السريع

إعداد وكيلك

بعد تثبيت Node.js وnpm، نفّذ:

npx rea-agents setup

اختر الوكلاء، وراجع التغييرات المقترحة، ثم وافق عليها. يضيف الإعداد خادم MCP الخاص بـ REA وتعليمات سير العمل المطابقة، مع الاحتفاظ بنسخ احتياطية من الإعدادات الموجودة. أعد تشغيل وكيلك بعد ذلك.

يدعم الإعداد Claude Code وCodex وCursor وGemini CLI وGrok Build ووكلاء آخرين. راجع التثبيت والإعداد لتهيئة موفّري التحليل وتسجيل MCP يدويًا.

اطلب من وكيلك

استقصِ طريقة عمل البحث في تطبيق Notes، واعرض الأدلة، ثم ابنِ ميزة مشابهة لمشروعي.

استبدل Notes بالتطبيق المستهدف وحدّد الميزة التي تريد فهمها.

استخدام الطرفية

افحص مجلد تطبيق JavaScript/Electron بعد فك حزمه، أو ملف ASAR:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

تتضمن النتيجة الوحدات وعمليات الاستيراد وحدود Electron والأدلة المتعلقة بها. استبدل المسار بمسار هدفك، مثل "D:/apps/example" على Windows.

لتثبيت أمر rea للاستخدام المعتاد:

npm install --global rea-agents
rea --help

لتحليل الشيفرة الأصلية، هيّئ موفّرًا أولًا. راجع دليل CLI وEvidence لأوامر تحليل الشيفرة الأصلية، واختيار الموفّر، واللقطات، والاستخدام في السكربتات.

تحديث REA

يتطور REA بسرعة، وتتضمن الإصدارات الجديدة إصلاحات متكررة للأخطاء. حافظ على تحديث نسختك.

لواجهة CLI المثبّتة عبر npm:

rea update

لتحديث تسجيلات الوكلاء والمهارة، نفّذ أمر الإعداد الذي يعرضه التحديث.

إذا كنت تستخدم npx، فحدّث إعداد وكيلك بالأمر التالي:

npx rea-agents@latest setup

راجع تغييرات الإعداد وأعد تشغيل وكيلك. لأوامر CLI التي تنفّذها مرة واحدة، استخدم npx rea-agents@latest متبوعًا بالأمر المطلوب.

كيف يعمل REA

يستدعي وكيلك REA عبر MCP لفحص الهدف وتتبع الشيفرة ذات الصلة. يعيد REA النتائج مع أدلتها. يستخدمها الوكيل لطرح أسئلة متابعة، أو شرح السلوك، أو كتابة تنفيذ واختباره. تستخدم أوامر CLI سير العمل نفسه.

مسار الاستقصاء في REA: يسأل وكيلك عن هدف محلي، ويفحصه REA ويتتبعه بأدوات التحليل، ثم يستخدم الوكيل الشيفرة والمراجع والجوانب غير المحسومة التي أعادتها الأدوات لشرح السلوك وتنفيذه واختباره.

افتح الشكل بحجمه الكامل.

ما الذي يمكنك تحليله

يتطلب REA إصدار Node.js 22.x (>=22.19) أو 24.x (>=24.11) أو 26+، إضافة إلى npm. تعتمد الأدوات الإضافية والأنظمة المضيفة المدعومة على الهدف:

الهدف ما يعيده REA المتطلبات والدليل
الملفات الثنائية للشيفرة الأصلية شيفرة شبه برمجية، وتعليمات تجميع، وسلاسل نصية، ورموز، واستدعاءات، ومراجع Hopper أو Ghidra أو IDA؛ تحليل الشيفرة الأصلية
بنية ELF دون تشغيل الأقسام والمقاطع والرموز ومعلومات إعادة التموضع الأصلية، وآليات الحماية المحتملة المستدلّ عليها بالفحص الثابت pwntools يوفّره المستدعي على Linux x64؛ تشخيص الملفات الثنائية
شيفرة EVM البايتية محددات التوجيه، وإزاحات البايتات، والمعاملات المستنتجة، وقابلية تغيير الحالة مدخل محلي يحمل بايتات خامًا أو تمثيلًا سداسيًا عشريًا على Linux x64؛ دليل EVM دون تشغيل
Rust binaries Embedded cargo-auditable dependency list Rust binaries
أعطال Linux المسجّلة سجلات note الخام، ومسجّلات المعالج/الإشارات لكل خيط مسجّل، وترشيحات اختيارية لخرائط الذاكرة pwntools يوفّره المستدعي على Linux x64؛ GDB/pwndbg اختياريان؛ الأعطال المسجّلة
JavaScript / Electron الوحدات، وعمليات الاستيراد، وخرائط المصدر، والمسارات، وIPC، وعلاقات إضافات الشيفرة الأصلية Node.js وnpm؛ تحليل التطبيقات
المواقع بنية الصفحة، والسكربتات، وملاحظات الشبكة، ولقطات الشاشة المطلوبة متصفح من عائلة Chrome؛ تحليل المتصفح
تسجيلات الشبكة المحفوظة الطلبات، والاستجابات، ومحتويات الحمولة المتاحة، ومواضعها في المصدر HAR؛ وmitmdump على Linux لتسجيلات mitmproxy بصيغتها الأصلية؛ دليل تسجيلات الشبكة
التقاط الحزم نقاط النهاية وDNS وTLS SNI وتوزيع البروتوكولات وطلبات HTTP tshark وcapinfos يوفّرهما المُستدعي؛ دليل pcap
تجميعات .NET البيانات الوصفية، وتعليمات CIL، واعتماديات الشيفرة الأصلية المعلنة، ومقارنات البناء فحص ثابت؛ دليل الشيفرة المُدارة
حزم Android APK تصريحات ملف manifest، والأصناف، والدوال الناتجة عن فك الترجمة، والمراجع JADX دون واجهة رسومية وJDK كامل على Linux/macOS/Windows x64؛ دليل Android
أجهزة Android الأجهزة والحزم والعمليات والسجلات والدامبات ولقطات الشاشة ونقل APK/الملفات adb يوفّره المُستدعي (محاكي أو جهاز)؛ دليل ADB
مشاريع JEB وحدات المشروع من المحرك وبصمات المصنّفات والكود الزائف للأنواع/الدوال عميل JEB يبدأه المُستدعي ويقدّم MCP، ويُختار عبر REA_JEB_MCP_URL؛ دليل JEB
موارد Android البيان المفكوك الترميز وجداول السلاسل واللغات وحقائق الإصدار مُشغّل Apktool يوفّره المُستدعي؛ دليل الموارد
تطبيقات Flutter بصمة لقطة Dart وهشوش المكتبات لكل ABI وأصل بناء المحرك لا شيء (تحليل APK ساكن)؛ دليل Flutter
البرامج الثابتة المناطق، ونتائج الاستخراج، وما يُمرّر إلى تحليل الشيفرة الأصلية Binwalk / Unblob على Linux؛ دليل البرامج الثابتة
الحزم المسجلة حقول مختارة وقيم متكررة ومرشحات وقواعد فك الترميز Linux: TShark 4.x + prlimit; دليل التقاط الحزم
الإشارات المنطقية المسجلة تعليقات مفكك الترميز ونطاقات العينات ومعلومات التشخيص Linux: sigrok-cli 0.7.2 + prlimit; دليل الإشارات
الحزم والموارد قوائم الملفات، والبصمات، وملفات plist، وبنية حزم Apple، والموارد المستخرجة دليل تحليل الملفات وJavaScript، تطبيقات Apple
سلوك العمليات مخرجات الطرفية، والتفاعلات، وملاحظات الخروج ونظام الملفات، ومقارنات التشغيل Linux/macOS مع PTY أصلي؛ تسجيل سلوك العمليات

يقرأ الفحص الثابت لـ JavaScript و.NET الملفات المقدّمة دون تشغيل التطبيق. يشغّل التسجيل أثناء التنفيذ الهدف المحدد أو يتفاعل معه بصلاحيات مستخدمك؛ ويشرح كل دليل للتسجيل أثناء التنفيذ آثاره.

تختلف صيغ ملفات الشيفرة الأصلية والأنظمة المضيفة المدعومة باختلاف الموفّر. راجع إعداد Hopper وGhidra، ودليل IDA، Kuna، ودعم Ghidra التجريبي على Windows. يدعم Ghidra أيضًا تحليل DOS ذي 16 بت. لاختيار الموفّر، راجع دليل CLI. تحقّق من توفر الميزات في الإصدارات للميزات المضافة بعد أحدث إصدار على npm.

دراسات الحالة

رسوم توضيحية لأمثلة توزيع الصوت في DX-Ball وجسر الحافظة في Notion وحلقة الطلقات في TH04

DX-Ball: إعادة بناء حساب توزيع الصوت بين القناتين

تتبّع استدعاء صوت إلى الدالة المساعدة التي تحوّل الموضع إلى توزيع بين القناتين، وافحص التعليمات، وحوّل الشيفرة شبه البرمجية غير المكتملة إلى C. تجتاز إعادة البناء 3,205 حالات اختبار على x86 الأصلي، وتعيد إنتاج جميع بايتات الدالة المترجمة البالغ عددها 63 بايتًا.

اقرأ دراسة الحالة · مستودع إعادة البناء

Notion: تتبّع جسر الحافظة في Electron

اعثر على API الحافظة في عملية العرض، وتتبّعه عبر preload وIPC إلى العملية الرئيسية، وافحص صيغة الحافظة ذات التنسيق الغني.

اقرأ دراسة الحالة

TH04: استعادة حساب حلقة المقذوفات في DOS

افحص تعليمات اللعبة الأصلية على PC-98 ذات 16 بت، واستعد حساب الزوايا الثابتة والموجّهة نحو الهدف، وقارن شيفرة C++ المعاد بناؤها بمخرجات المترجم المستخدم آنذاك.

اقرأ دراسة الحالة · مستودع إعادة البناء

إذا استخدمت REA لفحص هدف مثير للاهتمام، فنود الاطلاع عليه. شارك حالتك في issue أو pull request، مع ذكر الهدف، وسؤالك، وكيف ساعدك REA، وما توصلت إليه.

الأسئلة الشائعة

أي وكلاء يمكنهم استخدام REA؟

أي وكيل يدعم خوادم MCP المحلية. يهيّئ الإعداد الوكلاء المدعومين؛ ويمكن للعملاء الآخرين استخدام تسجيل MCP يدويًا.

هل أحتاج إلى Hopper أو Ghidra أو IDA؟

يستخدم تحليل الشيفرة الأصلية المتعمق أحدها. يعمل الفحص الثابت لـ JavaScript و.NET دون محرك لتحليل الشيفرة الأصلية. يستطيع الإعداد تثبيت Hopper بعد الموافقة؛ أما Ghidra وIDA فيستخدمان تثبيتاتك الموجودة. راجع إعداد الموفّرين.

هل أحتاج إلى تشغيل Hopper أولًا؟

يشغّل REA برنامج Hopper عندما تحتاج العملية إليه. على macOS، قد تظهر عند التشغيل الأول نافذة تطلب اختيار وضع العرض التجريبي أو تفعيل الترخيص. راجع تشغيل Hopper واستكشاف الأخطاء.

ماذا يفعل تثبيت المهارة من skills.sh؟

توفّر المهارة تعليمات الاستقصاء لوكيلك. استخدم npx rea-agents setup لتسجيل خادم MCP الخاص بـ REA وتثبيت التعليمات المطابقة، ثم أعد تشغيل وكيلك. راجع تثبيت المهارة وحدها.

ما الشيفرة التي يعيدها REA؟

يعيد تحليل الشيفرة الأصلية شيفرة شبه برمجية وتعليمات تجميع. يستعيد تحليل JavaScript/Electron الوحدات والعلاقات بينها. يستخدم وكيلك هذه النتائج لكتابة تنفيذ واختباره؛ وتقدّم دراسات الحالة أمثلة عملية.

هل يرفع REA تطبيقي؟

يحلّل REA الأهداف محليًا. يتلقى وكيلك نتائج الأدوات، ولموفّر النموذج الذي يستخدمه سياسة بيانات خاصة به.

ماذا أفعل إذا واجهت خطأ؟

حدّث أولًا؛ فقد يكون إصدار حديث قد أصلح المشكلة بالفعل.

لواجهة CLI المثبّتة عبر npm:

rea update

لإعداد الوكيل عبر npx:

npx rea-agents@latest setup

إذا كنت تستخدم وكيلًا، فأكمل تحديث الإعداد وأعد تشغيله. أعد محاولة المهمة نفسها. إذا استمرت المشكلة، افتح issue يتضمن إصدار REA، ونوع الهدف، وخطوات إعادة الإنتاج، ومخرجات الخطأ.

التوثيق

ابدأ بـ الأدلة العملية على الموقع. للخيارات الدقيقة والمتطلبات وعقود النتائج:

أبلغ عن الثغرات وفق SECURITY.md.

سجل النجوم

🎉 250,000 نجمة على GitHub — شكرًا لكم!

شكرًا لكل من يستخدم REA، ويبلّغ عن الأخطاء، ويقترح ميزات، ويختبر إصدارات البناء، ويساهم بالإصلاحات.

سجل نجوم REA على GitHub

إخلاء المسؤولية

راجع DISCLAIMER.md للحصول على إرشادات الاستخدام المسؤول.

REA مخصص للبحث والتعليم والتشغيل البيني وحفظ البرمجيات بشكل قانوني، ولتحليل البرمجيات التي تملكها أو لديك تفويض لفحصها.

The project's position on illegal or unauthorized use covers all REA versions, distribution channels, and platforms; each copy retains its applicable licenses.

المساهمة

نرحّب بمساعدتك في تطوير REA! افتح issue للإبلاغ عن خطأ أو اقتراح ميزة، أو أرسل pull request لتحسين الشيفرة أو التوثيق.

راجع CONTRIBUTING.md لإعداد بيئة التطوير والفحوص، ودليل الاختبار لمسارات التحقق، وخريطة البنية لهيكل المشروع.

الترخيص

MIT

REA-authored code is licensed under MIT. Third-party material retains its own licenses and copyright notices; see Third-party notices for the dependency inventory, preserved license texts, and external-tool terms.

You must legally obtain and be authorized to use commercial tools, including IDA Pro / Hex-Rays decompilers, Hopper, and JEB, under their applicable licenses. REA grants no tool license, key, or activation entitlement. Trials and demos remain subject to vendor terms, including user, feature, automation, and output sharing restrictions. Cracked copies, stolen keys, unauthorized key sharing, and bypassing license restrictions are not authorized. This guidance does not amend MIT or third-party licenses.