
خادم MCP لهندسة عكسية للملفات التنفيذية لنظام ويندوز وتنسيقات ثنائية. يجمع بين الفحص الثابت، واستعادة الوظائف بمساعدة Ghidra، وأدوات قابلة للتوسع عبر الإضافات، وإدارة القطع الأثرية، وتنفيذ اختياري في بيئة ويندوز معزولة.
ريكون هو خادم MCP لهندسة عكسية للملفات القابلة للتنفيذ في ويندوز وتنسيقات ثنائية ذات صلة. يجمع بين إدخال العينات، التقييم الثابت، استرداد الوظائف بمساعدة Ghidra، أدوات متخصصة تعتمد على الإضافات، إدارة القطع الأثرية، وتنفيذ وقت تشغيل ويندوز معزول اختياريًا عبر واجهة بروتوكول سياق النموذج.
يتم تنظيم سير عمل الخادم الحالي الموجه للذكاء الاصطناعي حول سطح بوابة بسيط:
workflow.search لترتيب الملفات الشخصية وسير العمل والقدرات المتخصصة المتطابقة لنوع الملف وهدف المستخدم.workflow.run action=request_upload لتحميل ملفات المضيف، أو دع workflow.search يوجه العملاء القدامى إلى أدوات توافق إدخال العينات المخفية.workflow.run action=start مع sample_id المعاد.workflow.run action=status و workflow.run action=promote لمراقبة وتعميق التشغيل المرحلي.artifact.read للقطع الأثرية الكاملة المستمرة عندما لا يكون ناتج سير العمل المضغوط كافياً.sample.*, workflow.analyze.*, workflow.triage, tools.discover, و task.status تبقى مسجلة للتوافق أو الفحص منخفض المستوى، لكن العملاء الجدد يجب أن يفضلوا workflow.search, workflow.run, و artifact.read.
عند الاتصال عبر بوابة rikune-agent عن بعد، يرى عملاء MCP أسماء نقل مستقرة:
workflow_search, workflow_run, artifact_read, rikune_tool_call, وعناصر التحكم
rikune_connection_*. rikune_connection_refresh يحدث ذاكرة التخزين المؤقت الداخلية للقدرات العلوية فقط؛ لا يوسع قائمة أدوات MCP. استخدم rikune_tool_call فقط بعد أن يحدد workflow_search أداة تحليل داخلية محددة لا تغطيها البوابة الرئيسية لسير العمل أو القطع الأثرية.
workflow.search نوع العينة والنتائج وبيانات الملف الشخصي لتوجيه نحو القدرات المتخصصة دون كشف كل أداة مسبقاً.Docker الثابت هو الإعداد الافتراضي الأكثر أماناً. لا يقوم بتنفيذ العينات.
.\rikune.ps1 install -Profile static -DataRoot "D:\Docker\rikune"
./rikune.sh install --profile static --data-root "$HOME/.rikune"
المكافئ اليدوي:
npm install
npm run build
npm run docker:generate:all
docker compose --env-file .docker-runtime.env -f docker-compose.analyzer.yml up -d --build analyzer
الوضع الهجين يشغل المحلل في Docker ويفوض عمل ويندوز المباشر إلى وكيل مضيف ويندوز. يمكن للوكيل المضيف تشغيل Windows Sandbox عند الطلب أو التحكم في VM Hyper-V مهيأة.
.\rikune.ps1 install -Profile hybrid -InstallRuntime
من Linux/macOS مع مضيف ويندوز عن بعد:
./rikune.sh install --profile hybrid --windows-host <windows-host> --windows-user <windows-user>
ربط عميل MCP لا يبدأ Windows Sandbox أو يشغل عينة. يبدأ عمل وقت التشغيل المباشر فقط عندما تطلبه أداة صراحة، مثل runtime.debug.session.start أو runtime.debug.command أو sandbox.execute أو مرحلة تنفيذ ديناميكي مرقّاة.
npm install
npm run build
npm test
node dist/index.js
الحزمة الجذرية تتطلب Node.js 22 أو أحدث. بعض حزم وقت التشغيل الفرعية يمكن تشغيلها على إصدارات أقدم من Node، لكن التطوير في المستودع وواجهة سطر الأوامر الجذرية المنشورة يجب أن تستخدم Node 22+.
ابدأ بـ workflow.search كلما كان سير العمل المطلوب أو نوع الملف أو الخلفية غير واضحة. ترتب الملفات الشخصية المتطابقة وتعيد تلميحات توجيه/جاهزية مضغوطة دون تفعيل الأدوات المتخصصة المخفية.
بالنسبة لملفات المضيف، اتصل بـ workflow.run action=request_upload، ثم أرسل البايتات الخام إلى عنوان URL للتحميل المعاد، ثم اقرأ sample_id من استجابة HTTP. sample.request_upload و sample.ingest هما أدوات مساعدة للتوافق وليس المسار الطبيعي الموجه للذكاء الاصطناعي.
بالنسبة لنشر المحلل عن بعد أو rikune-agent، قم بتعيين API_PUBLIC_BASE_URL أو RIKUNE_API_PUBLIC_BASE_URL أو RIKUNE_ANALYZER_PUBLIC_URL إلى قاعدة واجهة HTTP القابلة للوصول من العميل، مثل http://159.195.136.226:18080. ثم تعيد جلسات التحميل قيم upload_url / status_url عامة بدلاً من عناوين localhost المحلية للحاوية. كما تقوم البوابة عن بعد بتطبيع عناوين تحميل localhost من المحللين الأقدم إلى نقطة نهاية المحلل المهيأة.
إذا كانت واجهة HTTP API مفعلة، فإن POST /api/v1/samples لا يزال متاحاً للتكاملات غير MCP. الإدخال الناجح يعيد sample_id؛ يجب أن يستخدم التحليل sample_id، وليس مساراً محلياً، بعد الاستيراد.
اتصل بـ workflow.run action=start مع sample_id. تقوم المرحلة الأولى بعمل ملف تعريف سريع وإنشاء أو إعادة استخدام تشغيل تحليل. plan_id المعاد يتوافق مع تشغيل التحليل المستمر.
استخدم workflow.run action=promote لطلب مراحل أعمق. يقوم خط الأنابيب حالياً بنمذجة هذه المراحل:
fast_profileenrich_staticfunction_mapreconstructsemantic_reviewsdynamic_plandynamic_executesummarizeيتم وضع العمل الطويل في قائمة الانتظار عبر نظام الوظائف. استطلع حالة المرحلة المضغوطة باستخدام workflow.run action=status.
workflow.run action=status هو العرض الأساسي للتشغيل المرحلي. قد يتم اقتطاع حمولات المرحلة التاريخية الكبيرة مع تحذير على المستوى الأعلى؛ استخدم artifact.read للقطع الأثرية الكاملة. task.status هو عرض توافق خام للعملية/قائمة الانتظار ويشمل ذاكرة external_active_* الخاصة بعمليات المحلل الفرعية.
أسطح مفيدة للمتابعة:
workflow.searchworkflow.runanalysis.context.getartifact.read، بالإضافة إلى أدوات مساعدة للتوافق مثل artifact.list و artifact.diff و artifact.downloadreport.summarize و report.generate و workflow.summarizeworkflow.semantic_name_reviewworkflow.function_explanation_reviewworkflow.module_reconstruction_reviewtool.help و و للتوافق/التصحيحمسار الشيفرة الحالي هو:
src/index.ts
-> loadConfig()
-> WorkspaceManager / DatabaseManager / PolicyGuard / CacheManager / StorageManager / JobQueue
-> optional RuntimeClient أو تهيئة Windows sandbox
-> registerAllTools()
-> MCP stdio server
توجد وحدات الخادم الأساسية تحت src/core/:
تظل بعض الملفات على المستوى الجذر مثل src/server.ts و src/tool-registry.ts و src/plugins.ts موجهات توافق. يجب أن تستهدف الشيفرة الجديدة src/core/*.
تتم تهيئة أوضاع وقت التشغيل عبر runtime.mode أو متغيرات البيئة:
disabled: لا تفويض وقت تشغيل.manual: الاتصال بنقطة نهاية وقت تشغيل مزودة.remote-sandbox: التفويض إلى وكيل مضيف ويندوز.auto-sandbox: المحلل الأصلي لويندوز يطلق Windows Sandbox محلياً.يجب على المحللات Docker/WSL استخدام remote-sandbox، وليس auto-sandbox.
يتضمن ريكون حالياً 111 إضافة مدمجة تحت src/plugins/<id>/. يمكن للإضافات تسجيل الأدوات، وإعلان التبعيات، وكشف مخطط التهيئة، والمشاركة في خطافات دورة الحياة، وتوفير بيانات Docker الوصفية، وإعلان أدوات محدودة مدعومة بالعمال عبر بيانات workerBackend.
تحتفظ مجموعة العمال الأمامية بأدوات التخطيط فقط كأسطح تقييم وتسليم، ثم تضيف أدوات تنفيذ صريحة بجانبها. تكشف restringer.deobfuscation.run و jsimplifier.pipeline.run و jsir.cascade.normalize و gtirb.ir.generate و remill.lift.run و manifold.fact.extract و qbdi.trace.run و culifter.gpu.artifact.inventory عن عقود العمال عبر workflow.search و plugin.list و tool.help و tool.readiness؛ يبقى tools.discover بوابة توافق منخفضة المستوى. يظل الاكتشاف والجاهزية سلبيين: يبلغان عن بيانات وصفية للخلفية وإرشادات إعداد دون بدء REstringer أو JSIMPLIFIER أو JSIR/CASCADE أو GTIRB أو Remill أو Manifold أو QBDI أو برامج تشغيل GPU أو Node/V8 أو المتصفحات أو أدوات قياس وقت التشغيل.
يقرأ توليد Docker تبعيات الإضافة systemDeps وبيانات حزمة العمال مباشرة. تقوم الصور الافتراضية بتثبيت أغلفة ثابتة منخفضة المخاطر مثل REstringer و JSIMPLIFIER و Manifold و WABT والتحقق من LIEF؛ يمكن للملفات الشخصية الاختيارية تفعيل مسارات ثابتة مثل JSIR/CASCADE و JSVMP و GTIRB و radare2 و Triton-style؛ تظل الخلفيات الثقيلة/وقت التشغيل/GPU/الحساسة للترخيص مقيدة بالملف الشخصي أو BYO أو sidecar.
node scripts/generate-docker.mjs --dry-run
node scripts/generate-docker.mjs --profile=full --backend-profile=optional
node scripts/generate-docker.mjs --all-profiles --dry-run
يتم التحكم في تحميل الإضافات بواسطة PLUGINS:
PLUGINS=* # جميع الإضافات المدمجة
PLUGINS=pe-analysis,yara # إضافات محددة
PLUGINS=-dynamic # الكل باستثناء الديناميكي
استخدم هذه الأدوات MCP في وقت التشغيل:
workflow.searchworkflow.runplugin.listplugin.enableplugin.disabletools.discover و tool.readiness للتوافق/التصحيح منخفض المستوىانظر docs/PLUGINS.md و packages/plugin-sdk/README.md.
عندما يكون api.enabled صحيحاً، يعرض خادم الملفات المدمج:
تتم معالجة مصادقة مفتاح API وتحديد المعدل ورؤوس الأمان و CORS المحدودة بواسطة طبقة HTTP.
الحد الأدنى لتطوير الأساس:
الأدوات الاختيارية خاصة بالإضافات. قم بتشغيل system.health و system.setup.guide و tool.readiness و plugin.list لرؤية ما هو مفقود في بيئة معينة.
src/
index.ts مدخل الخادم الرئيسي
core/ خادم MCP والسجل والمنفذ وتنسيق الإضافات
core/tool-registry/ أجزاء تسجيل الأدوات/الاستبانات/الموارد المدمجة
tools/ تطبيقات الأدوات الأساسية
workflows/ سير العمل للتحليل المرحلي والتقييم وإعادة البناء والمراجعة
analysis/ حالة التشغيل ومشغل المهام الخلفية
plugins/ 111 إضافة مدمجة
persistence/ استمرارية SQLite ومساحة العمل
sample/ إنهاء العينة وفحص مساحة العمل
storage/ القطع الأثرية والتحميلات والاحتفاظ
runtime-client/ عميل التفويض لوقت التشغيل من جانب المحلل
worker/ تنسيق عمال Ghidra و Python
packages/
plugin-sdk/ حزمة SDK العامة للإضافات
shared/ أنواع عقود وقت التشغيل والأدوات
runtime-node/ منفذ وقت تشغيل معزول
windows-host-agent/ وكيل مضيف Windows Sandbox / Hyper-V
workers/ نصوص عمل Python وقواعد YARA
docker/ قوالب Dockerfile المولدة وملفات الملفات الشخصية
docs/ وثائق الهندسة والإضافات ووقت التشغيل والنشر
tests/ اختبارات الوحدة والتكامل والنهاية إلى النهاية
npm install
npm run build
npm test
npm run typecheck
npm run validate
npm run docker:generate:all
فحوصات مركزة مفيدة:
npm run test:unit
npm run test:integration
npm run test:e2e
npm run build:runtime
بناء محلي:
{
"mcpServers": {
"rikune": {
"command": "node",
"args": ["D:/Playground/windows-exe-decompiler-mcp-server/dist/index.js"],
"env": {
"API_ENABLED": "true",
"API_PORT": "18080",
"API_PUBLIC_BASE_URL": "http://127.0.0.1:18080",
"PLUGINS": "*"
}
}
}
}
Docker stdio:
{
"mcpServers": {
"rikune": {
"command": "docker",
"args": ["exec", "-i", "rikune-analyzer", "node", "dist/index.js"]
}
}
}
حزمة منشورة:
npm install -g rikune
rikune
rikune docker-stdio
rikune agent
بشكل افتراضي، يخزن ريكون البيانات المستمرة تحت جذر ريكون على مستوى المستخدم. عادةً ما تقوم مثبتات Docker بتعيين ذلك الجذر إلى دليل مضيف مثل D:\Docker\rikune.
أدلة فرعية شائعة:
samples/artifacts/uploads/cache/logs/يتم تجميع مساحات عمل العينات حسب SHA-256 لتجنب تعارض المسارات والحفاظ على النسخ الأصلية غير القابلة للتغيير.
تم تصميم ريكون لتحليل البرامج الضارة والثنائيات غير الموثوقة، لكنه ليس حدود أمان سحرية بحد ذاته.
PolicyGuard.انظر SECURITY.md و TROUBLESHOOTING.md.
MIT
tool.readinesstools.discover| المنطقة | الملف الحالي |
|---|
| غلاف خادم MCP | src/core/server.ts |
| سجل الأدوات/الاستبانات/الموارد MCP | src/core/mcp-registry.ts |
| تنفيذ الأدوات والتحقق والخطافات | src/core/tool-executor.ts |
| تنسيق السجل | src/core/tool-registry.ts |
| أجزاء السجل المدمجة | src/core/tool-registry/*.ts |
| واجهة مدير الإضافات | src/core/plugins.ts |
| اكتشاف/تحميل الإضافات | src/core/plugin-orchestrator.ts |
| كشف الأدوات التدريجي | src/core/tool-surface-manager.ts |
| الخطة | الغرض | الشيفرة الرئيسية |
|---|
| المحلل | خادم MCP stdio، HTTP API، تخزين، وظائف، أدوات ثابتة، تنسيق الإضافات | src/index.ts, src/core/* |
| عقدة وقت التشغيل | منفذ مهام معزول داخل sandbox أو VM | packages/runtime-node/* |
| وكيل مضيف ويندوز | تشغيل/إيقاف Windows Sandbox أو وقت تشغيل Hyper-V وكشف نقاط نهاية التحكم في وقت التشغيل | packages/windows-host-agent/* |
| بوابة الوكيل | بوابة/وكيل MCP لإدارة اتصال المحلل/وقت التشغيل | src/rikune-agent-gateway.ts |
| نقطة النهاية | الغرض |
|---|
/dashboard و / | واجهة لوحة التحكم |
/api/v1/health | البقاء على قيد الحياة |
/api/v1/ready | الجاهزية عبر قاعدة البيانات وقائمة الانتظار ووقت التشغيل وخلفيات الإضافات |
/api/v1/events | أحداث SSE |
/api/v1/samples | تحميل العينات المباشر |
/api/v1/samples/:id | بيانات العينة الوصفية |
/api/v1/samples/:id/download | تحميل العينة الأصلية |
/api/v1/artifacts | قائمة القطع الأثرية |
/api/v1/artifacts/:id | قراءة/حذف قطعة أثرية |
/api/v1/uploads/:token | جلسة تحميل دائمة POST/حالة |