
خادم MCP من نمط C2 وسيط (Agentic) لأدوات Frida على أندرويد مجذر و iOS مكسور الحماية.
خادم MCP مع نقل HTTP قابل للتدفق (streamable) يُشغّل التجهيز الديناميكي (dynamic instrumentation) من Frida بالكامل على الجهاز — دون الحاجة إلى أدوات على جانب العميل.
يعمل هذا المشروع مباشرة على أجهزة Android التي تم الوصول إلى صلاحيات الجذر (rooted) وأجهزة iOS التي تم كسر حمايتها (jailbroken)، حيث يقدّم Frida كمجموعة من الأدوات القابلة للاستدعاء عبر HTTP. يمكن لأي عميل متوافق مع MCP الاتصال بجهاز على الشبكة وإجراء التجهيز الديناميكي دون تثبيت أي أدوات Frida محليًا.
بالنسبة للتطوير المستقبلي، يستهدف كلًا من Gemini CLI و Claude Code كعملاء أساسيين، حيث أن كلاهما يبني تنظيمًا متعدد الوكلاء (multi-agent) أصليًا ودعمًا لـ MCP — وهذا يتماشى مع اتجاه المشروع نحو تركيب خوادم MCP متعددة (مثل FridaC2MCP + Jadx-MCP) في سير عمل آلي. تم استخدام 5ire بكثافة خلال مرحلة التطوير المبكرة، ولا يزال خيارًا ممتازًا بواجهة رسومية للتفاعل مع الخادم.
Gemini CLI — تسجيل خادم MCP للجهاز (استبدل <DEVICE_IP> بعنوان LAN لهاتفك):
gemini mcp add --transport http frida-c2-mcp http://<DEVICE_IP>:6767/mcp
عرض توضيحي على Android
https://github.com/user-attachments/assets/7cee77c5-ed40-4797-b6b5-3edb5fdd03ce
عرض توضيحي على iOS
https://github.com/user-attachments/assets/1f0fa9c4-6fd0-4dfd-a640-78c9f8a95a6b
keep_alive=True).الهدف هو اختبار أمان الأجهزة المحمولة بشكل آلي بالكامل وموجّه بواسطة وكيل (agent). من خلال تقديم Frida كخادم MCP، يمكن لمختبر الاختراق أو وكيل AI فحص سلوك التطبيق والتلاعب به دون الحاجة إلى اتصال USB مباشر أو وصول إلى شل محلي بعد الإعداد الأولي. لا يحتاج العميل إلى أي أدوات Frida — كل شيء يُشغّل على الجهاز المستهدف.
سير العمل النموذجي:
يمتد هذا بشكل طبيعي إلى إعدادات متعددة الأجهزة: قم بتشغيل عدة هواتف على نفس الشبكة، كل منها مع خادم MCP خاص به، وتنظيمها من وكيل واحد.
cli.py)يعمل في Termux على أجهزة Android التي تم الوصول إلى صلاحيات الجذر. يستخدم esbuild لتجميع السكربتات فورًا و frida-java-bridge لتجهيز بيئة تشغيل Java/Android. على الرغم من أن frida-compile متوفر تقنيًا عبر frida-tools، إلا أنه لا يمكن استخدامه في Termux لأن نطاق untrusted_app SELinux في Android يمنع تعيينات الذاكرة W^X اللازمة لمترجم JIT الخاص بـ V8 — مما يسبب SIGSEGV في أي سكربت غير تافه. esbuild هو ثنائي Go مرتبط بشكل ثابت (statically linked) بدون JIT، لذا فهو يعمل بشكل نظيف في أي سياق SELinux.
ios.py)يعمل على أجهزة iOS التي تم كسر حمايتها بنظام rootless (مُختبر على iPhone X، iOS 16.7.12 مع palera1n). يستخدم frida-compile لتجميع السكربت و frida-objc-bridge لتجهيز بيئة تشغيل Objective-C. لا يتطلب Node.js على الجهاز.
تطلّب منفذ iOS تجميع مجموعة أدوات Python 3.12 بالكامل مخصصة لمعمارية arm64، حيث لم تكن أي من هذه الحزم متاحة لنظام iOS rootless مع كسر الحماية:
يتم تضمين العجلات المجمّعة مسبقًا (precompiled wheels) وملف Python .deb في ios_precompiled/ حتى لا تضطر إلى بنائها بنفسك. راجع setup.md للحصول على تعليمات تثبيت iOS.
التنفيذ على الجهاز: يعمل كل من خادم Frida والعميل على الجهاز المستهدف. يقوم خادم MCP بترجمة طلبات HTTP إلى أوامر Frida. هذا يختلف عن النموذج التقليدي حيث يعمل عميل Frida على جهاز كمبيوتر منفصل.
نقل HTTP قابل للتدفق (streamable): يستخدم HTTP قابل للتدفق بدلاً من stdio لدعم اتصالات متزامنة متعددة وتنظيم متعدد الأجهزة.
تجميع السكربت على الجهاز: تتطلب Frida 17+ تجميع JavaScript. على Android، يتولى esbuild عملية التجميع (يعمل في أي سياق SELinux بدون JIT). على iOS، يُستخدم frida-compile مع استيرادات جسر ObjC التي تُحقن تلقائيًا.
تصميم يركز على الوكيل (Agent-First): تم بناؤه لاستهلاكه بواسطة وكلاء AI بدلاً من المشغلين البشريين. تم تصميم واجهة أداة MCP بحيث يمكن لنموذج اللغة الكبير (LLM) التنقل بشكل مستقل في سير عمل اختبار اختراق كامل — تشغيل التطبيقات، ربط الجلسات، كتابة وحقن hooks، قراءة النتائج — في محادثة واحدة.
FridaC2MCP هو هيكل أساسي لإطار عمل آلي لاختبار اختراق الأجهزة المحمولة. الفكرة هي تركيب خوادم MCP متخصصة متعددة — على سبيل المثال: FridaC2MCP للتجهيز الديناميكي، و Jadx-MCP للتحليل الثابت — والسماح لوكلاء AI بتنظيم سير العمل بالكامل. قم بفك تجميع APK، وتحديد الوظائف المثيرة للاهتمام، ثم ربطها مباشرة. لا تبديل أدوات يدوي، لا نسخ ولصق بين المحطات.
هذا يتناسب بشكل طبيعي مع Gemini CLI و Claude Code، اللذان يدعمان بالفعل سير عمل MCP متعدد الأدوات بشكل أصلي. لا يحتاج الإطار إلى تنفيذ تنظيم الوكيل الخاص به — فهو يحتاج فقط إلى توفير خوادم MCP المناسبة والسماح للوكلاء الحاليين بالقيام بما يجيدونه.
OpenSSL / SSL على iOS: تكامل OpenSSL في بناء Python 3.12 ليس صحيحًا تمامًا. هذا لم يعيق خادم MCP (الذي لا يعتمد على HTTPS لنقله الخاص)، لكنه قد يكون مهمًا إذا احتاج تبعية مستقبلية إلى سياق TLS عامل على الجهاز. راجع devlog.md للتفاصيل.
FastMCP 2.x فقط: قدم FastMCP 3.x تغييرات في واجهة برمجة التطبيقات (API) أدت إلى كسر التوافق. يتم تثبيت كل من Android و iOS أسفل الإصدار 3.x. قم بالتثبيت عبر requirements-android.txt أو requirements-ios.txt — لا تقم بالترقية إلى إصدار غير مثبت من fastmcp حتى يقوم هذا المستودع بالترحيل.
هذا المشروع هو تطور شبكي للمشروع الأصلي FridaMCP بواسطة Daniel Nakov. بينما كان المشروع الأصلي رائدًا في استخدام Frida كخادم MCP عبر stdio، يقوم FridaC2MCP بتكييف هذا المفهوم لبيئات C2 عن بُعد ومتعددة الأجهزة باستخدام HTTP قابل للتدفق وتجميع Frida 17 الحديث.
تعتمد بيئة تشغيل Python 3.12 على iOS على python3.12-ios-arm64 بواسطة k1tty-xz. كان المشروع الأصلي يستهدف عمليات كسر الحماية بنظام rootful — كانت هناك حاجة لتعديلات كبيرة لتكييفه مع بيئات كسر الحماية بنظام rootless (palera1n، تخطيط /var/jb/).
هذا إثبات مفهوم (proof-of-concept). يفتقر إلى إدارة جلسات مناسبة، ومعالجة أخطاء سلسة، وأي شكل من أشكال الأمان. جميع الاتصالات غير مشفرة وغير مصادق عليها. استخدم على مسؤوليتك الخاصة وفقط في بيئات شبكية آمنة ومعزولة.
| الحزمة | الإصدار | نظام البناء | السبب |
|---|
| Python | 3.12.5 | configure + Make | بيئة التشغيل الأساسية — غير متوفرة عبر Procursus |
| frida-python | 17.6.0 | Meson + setuptools | روابط Frida الأساسية |
| pydantic-core | 2.41.5 | maturin (Rust/PyO3) | مطلوب بواسطة FastMCP |
| cryptography | 47.0.0.dev1 | maturin (Rust) + OpenSSL 3.x | سلسلة التبعيات؛ تطلّب إصلاح SIGILL لـ A11 |
| cffi | 2.0.1.dev0 | setuptools + libffi | مطلوب بواسطة cryptography |
| pyyaml | 7.0.0.dev0 | setuptools + libyaml | مطلوب بواسطة تبعيات FastMCP |
| rpds-py | 0.30.0 | maturin (Rust/PyO3) | مطلوب بواسطة تبعيات FastMCP |
| lupa | 2.6 | setuptools + Lua | تضمين Lua |