
وكيل ذكاء اصطناعي مستقل بالكامل للهندسة العكسية
.-. ██ ██ ██ ██████ ██ ██████
(o o) ██ ██ ██ ██ ██ ██ ██
| u | ██ ██ ██ ██████ ██ ██ ███
| | ██ ██ ██ ██ ██ ██ ██ ██ ██
'~-~' █████ ██████ ██ ██ ██ ██████
autonomous reverse-engineering agent · android · binary · frida
Jurig (بالسوندانية: شبح) — وكيل ذكاء اصطناعي مستقل يسكن ملفاتك الثنائية. في واجهة TUI يومض الشبح ويتمايل ويتلألأ أثناء عمله.
إطار عمل لهندسة عكسية مستقل بالكامل وقائم على وكلاء الذكاء الاصطناعي مع واجهة TUI. يبدأ من أندرويد (APK/DEX) بالإضافة إلى الملفات الثنائية الأصلية. مكتوب بلغة Go، بدون MCP — كل أداة هي غلاف أصلي لعملية فرعية حول ملف ثنائي RE محمول.
| الجانب | الاختيار |
|---|---|
| اللغة / TUI | Go + Bubble Tea + Lipgloss + Glamour (تقارير markdown) |
| الوكيل | حلقة plan→act→observe خاصة (internal/agent) — بدون ارتباط بإطار عمل |
| الأدوات | أغلفة عمليات فرعية أصلية بلغة Go (internal/tools) — بدون MCP |
| LLM | صيغة سلكية واحدة (بروتوكول Anthropic Messages) خلف موجّه |
| المزوّدون | anthropic (مباشر)، openrouter (واجهة Anthropic)، claude-cli (اشتراك) |
| الأدوات المحمولة | internal/portable يحل الملفات الثنائية المضمّنة → PATH؛ يثبّت من كتالوج |
بروتوكولا اتصال خلف موجّه واحد:
anthropic — واجهة Messages API الأصلية (/v1/messages).openai — OpenAI Chat Completions (/chat/completions) مع
مترجم داخلي Messages↔OpenAI (بما في ذلك tool-calls). يغطي أي
نقطة نهاية متوافقة مع OpenAI.الإعدادات المسبقة المضمّنة (config.json → providers):
| المزوّد | النوع | نقطة النهاية | متغير المفتاح |
|---|---|---|---|
| mimo (افتراضي) | openai | token-plan-sgp.xiaomimimo.com/v1 | MIMO_API_KEY |
| anthropic | anthropic | api.anthropic.com | ANTHROPIC_API_KEY |
| openrouter | openai | openrouter.ai/api/v1 | OPENROUTER_API_KEY |
| ollama (محلي) | openai | localhost:11434/v1 | — (محلي) |
| kimi | openai | api.kimi.com/coding/v1 | KIMI_API_KEY |
| moonshot | openai | api.moonshot.ai/v1 | MOONSHOT_API_KEY |
| dashscope / Qwen (Alibaba) | openai | dashscope-intl…/compatible-mode/v1 | DASHSCOPE_API_KEY |
| custom (أي متوافق مع OpenAI) | openai | أنت تحدد base_url | CUSTOM_API_KEY |
| claude-cli (اشتراك) | claude-cli | ملف claude الثنائي | — |
اختر المزوّد+النموذج مباشرة في TUI عبر Ctrl+O، أو اضبط
JURIG_PROVIDER + JURIG_MODEL، أو حرّر active في config.json. أضف نماذج
بتوسيع قائمة models الخاصة بالمزوّد. وجّه أي مزوّد إلى عنوان base
URL مختلف (مثل بوابة مستضافة ذاتيًا) عبر base_url.
Ollama: ollama serve + ollama pull qwen2.5-coder:14b، ثم Ctrl+O →
اختر ollama/…. لا حاجة لمفتاح.
claude-cli (اشتراك Claude Code): تحظر Anthropic مصادقة الاشتراك في
أدوات HTTP التابعة لجهات خارجية (أبريل 2026)، لذا يلجأ هذا المسار إلى الملف الثنائي claude.
للاستشارة/الدردشة فقط — بدون tool-calling أصلي؛ استخدم مزوّد openai/anthropic
للحصول على حلقة الأدوات المستقلة الكاملة.
custom — مزوّد عام واحد لأي نقطة نهاية متوافقة مع OpenAI. لا يضمّ Jurig
أي بوابة مضمّنة؛ تملأ عنوان base URL بنفسك في معالج الإعداد
(/setup) أو في config.json. يعمل مع:
npx 9router) أو OmniRoute،
التي تضع واجهة أمام حسابات Cursor / Claude Code / Codex على http://localhost:20128/v1.اضبط base_url (مثل http://localhost:20128/v1) وإذا كانت نقطة النهاية تحتاج مفتاحًا،
api_key (أو متغير البيئة CUSTOM_API_KEY / CUSTOM_BASE_URL للعنوان). تُعتبر
بوابة localhost جاهزة بدون مفتاح. المزوّد custom مُعلَّم بـ auto_models، لذا
يجلب المنتقي (Ctrl+O) الكتالوج المباشر من /models الخاص بنقطة النهاية عند
الفتح — اضغط r لتحديث قائمة أي مزوّد. بالنسبة لموجّه اشتراك، تحمل معرّفات النماذج
بادئة مسار (cu/ لـ Cursor، cc/ لـ Claude Code، cx/ لـ Codex) — تعرض القائمة
المحمّلة تلقائيًا المعرّفات الدقيقة.
قد يؤدي استخدام الاشتراكات خارج عملائها الرسميين إلى انتهاك شروط الخدمة — حسابك، مخاطرك.
go build -o jurig ./cmd/jurig
لا حاجة لأي أعلام. عند التشغيل الأول (أو عندما لا يملك المزوّد النشط مفتاحًا) يُطلق
معالج إعداد تفاعلي: اختر المزوّد (OpenRouter / Kimi / Qwen / Ollama /
Anthropic / اشتراك Claude) → المفتاح → النموذج → تثبيت مسبق اختياري للأدوات →
يُحفظ في ~/.jurig/config.json.
./jurig # first run → wizard, then TUI
./jurig setup # re-run the wizard anytime
./jurig doctor # show provider + toolchain status
./jurig install jadx # pre-warm a tool (also auto-installs on demand)
./jurig -p "analyze ./app.apk" # headless one-shot (skips wizard; needs a key set)
./jurig -target ./work/app -p "..." # pin a per-target work dir
| المفتاح | الإجراء |
|---|---|
| Enter | تشغيل التعليمات / الإرسال |
| ↑ / ↓ | سجل الأوامر |
| PgUp / PgDn | تمرير النص |
| Ctrl+F | البحث في النص (Enter = التطابق التالي) |
| Ctrl+O | تبديل المزوّد / النموذج |
| F1 | نافذة المساعدة |
| Ctrl+C | إلغاء التشغيل / الخروج |
عندما يطرح الوكيل سؤال تحديد النطاق، تظهر قائمة إجابات: ↑/↓ للتنقل، Space أو 1-9 للتبديل (اختيار متعدد)، Enter للتأكيد.
استئناف الجلسة: تستمر المحادثة + سجل الأوامر في
<work_dir>/session.json وتُستعاد تلقائيًا عند التشغيل التالي (--fresh يبدأ نظيفًا).
بطاقات الكود: كلما قرأ الوكيل ملف مصدر، تعرض TUI معاينة صغيرة بإبراز الصيغة — لا يزال النموذج يتلقى الملف كاملًا.
الاستطلاع والفرز
| الأداة | الغرض |
|---|---|
manifest | تحليل AndroidManifest → الحزمة، الأذونات، المكونات المصدّرة |
url_extract | استخراج + إزالة تكرار كل عناوين URL → خريطة API/المضيف |
secret_scan | فحص مصنّف للأسرار المضمّنة (AWS/GCP/JWT/keys/AES…) |
native_libs | سرد lib/<abi>/*.so + ABIs (سطح JNI) |
search_code | grep بتعبير نمطي على المصادر — حدّد الموقع قبل القراءة |
ask_user | يسأل الوكيل المشغّل (قائمة اختيار متعدد) |
التحليل الساكن
| الأداة | الغرض |
|---|---|
jadx | APK/DEX/XAPK → Java (يستخرج الحزم تلقائيًا، ملخص غني) |
apktool | APK → smali + manifest مفكوك |
radare2 / ghidra | تفكيك ملف ثنائي أصلي / تفكيك بدون واجهة |
elf_info / pe_info | تحليل ترويسات ELF/PE، الرموز، الاستيرادات (أصلي) |
hexdump / strings | بايتات خام / سلاسل قابلة للطباعة |
unzip | استخراج أصلي لـ zip/apk/xapk/apks (بدون shell) |
الديناميكي والشبكة
| الأداة | الغرض |
|---|---|
adb | التحكم بالجهاز |
frida_ps | سرد تطبيقات/عمليات الجهاز |
frida | تشغيل سكربت Frida JS مخصص |
frida_preset | مدمج: ssl_unpin، list_classes، dump_class، hook، trace_http |
proxy | وسيط MITM أصلي بلغة Go (goproxy) — التقاط حركة HTTPS الحية |
http_request | إعادة تشغيل/اختبار نقاط نهاية API المكتشفة |
download | جلب عنوان URL إلى مجلد العمل |
التقاط الشبكة الحي: يشغّل proxy start وسيط MITM داخل العملية ويصدّر
CA. يوجّه الوكيل الجهاز إليه (adb) + يثبّت CA + يشغّل
frida_preset ssl_unpin، ثم يقرأ التدفقات عبر proxy flows. تُبثّ
الطلبات/الاستجابات الملتقطة مباشرة في لوحة جانبية NET في TUI (تظهر عندما
يكون الطرفية عريضًا بما يكفي — التخطيط متجاوب بالكامل).
نظام الملفات / shell: read_file، write_file، list_dir، shell (PowerShell افتراضيًا على Windows).
يعرض الترويسة استخدام الرموز الحي (Nk↑ Nk↓) أثناء تشغيل الوكيل.