
مجموعة اختبار أمان الأجهزة المحمولة مفتوحة المصدر لأنظمة iOS وAndroid. كانت تُعرف سابقًا باسم Passionfruit.
مجموعة أدوات حقن وتتبّع (instrumentation) لتطبيقات الجوال في وقت التشغيل، مدعومة بـ Frida. افحص تطبيقات الجوال واعترض دوالها وعدّلها من خلال واجهة تعمل عبر المتصفح.
يدعم الآن كلاً من iOS وAndroid!
يتطلب تشغيل خادم Frida على جهازك. اتبع أدلة الإعداد الرسمية(Android) أولاً.
npm (موصى به، يتطلب Node.js 22.18+)
npm install -g igf
igf
أو شغّله دون تثبيت (يتطلب Node.js 22.18+)
npx igf
تتوفر ملفات تنفيذية مبنية مسبقاً لأنظمة macOS وLinux وWindows في إصدارات GitHub. تستخدم كل من التطوير من المصدر والملفات التنفيذية المبنية مسبقاً Node.js؛ راجع دليل التطوير لسير عمل npm.
igf [options] Start the server (default)
Options:
--frida <16 | 17> Frida version to use (default: 17)
--host <host> Host to bind (default: 127.0.0.1)
--port <port> Port to bind (default: 31337)
--project <path> Project directory for data/cache/logs (default: .igf in cwd)
--no-open Do not open browser on startup
--help, -h Show help message
تتجاوز خيارات سطر الأوامر متغيرات البيئة عند ضبطهما معاً.
لا يتضمن هذا المشروع تجاوزات مدمجة لحمايات مكافحة العبث (anti-tampering):
الأساس المنطقي: تتطور حلول RASP (الحماية الذاتية للتطبيق في وقت التشغيل) باستمرار لكشف أُطر الحقن والتتبّع. يتطلب الحفاظ على تجاوزات فعالة جهداً متواصلاً لمواكبة طرق الكشف الجديدة، مما يفرض عبء صيانة كبيراً ومشاكل استقرار محتملة. كما أن هذه التجاوزات مرتبطة بشدة بتطبيق بعينه، ما يجعل الحلول العامة هشّة.
بدلاً من توفير تجاوزات مدمجة هشّة، تركّز Grapefruit على قدرات الحقن والتتبّع والفحص التي تتكامل جيداً مع أدوات التجاوز المتخصصة.
الأساليب الموصى بها للتقييمات المصرّح بها عندما يكون تجاوز RASP مطلوباً:
متتبّع استدعاءات النظام في Frida — استخدم frida-strace (Frida 17.8.0+) لتتبّع استدعاءات النظام في العملية المستهدفة. يساعد ذلك في تحديد مؤشرات الكشف ومعرفة التصحيحات المطلوبة قبل ربط Grapefruit بالعملية:
frida-strace -U -f com.example.app
راجع ملاحظات إصدار Frida 17.8.0 للاطلاع على التفاصيل.
البنية متعددة الجلسات — يدعم Frida جلسات متعددة مرتبطة بنفس العملية. ابدأ جلسة منفصلة بنصوص تجاوز RASP الخاصة بك أولاً، ثم شغّل Grapefruit. عندما يكتشف Grapefruit أن التطبيق المستهدف يعمل بالفعل، يرتبط بالعملية الحالية بدلاً من إعادة تشغيلها، محافظاً على أي تجاوزات مفعّلة بالفعل.
يرتبط Grapefruit بـ 127.0.0.1 افتراضياً ولا يملك مصادقة مدمجة. يمكن لأي عملية محلية الوصول إلى واجهة الويب وواجهة API. وعلى الرغم من أن طلبات المصادر المتقاطعة (cross-origin) محظورة افتراضياً (لا توجد ترويسات CORS، ويرفض Socket.IO الاتصالات المتقاطعة المصدر)، فإن ذلك وحده لا يكفي لبيئة مشتركة أو عن بُعد.
إذا كنت بحاجة إلى وصول عن بُعد أو أمان متعدد المستخدمين، ضع Grapefruit خلف وكيل عكسي مزوّد بمصادقة مثل Caddy لتوفير TLS والتحكم في الوصول والتسجيل. لا تعرّض Grapefruit مباشرةً للشبكة دون مصادقة.
| Variable | Description | Default |
|---|
HOST | عنوان ربط الخادم | 127.0.0.1 |
PORT | منفذ الخادم | 31337 |
FRIDA_VERSION | إصدار Frida الرئيسي (16 أو 17) | 17 |
FRIDA_TIMEOUT | مهلة عمليات Frida (بالمللي ثانية) | 1000 |
PROJECT_DIR | مجلد المشروع للبيانات/ذاكرة التخزين المؤقت/السجلات | .igf في مجلد العمل الحالي |
LLM_PROVIDER | مزوّد الذكاء الاصطناعي (anthropic, openai, gemini, openrouter) | |
LLM_API_KEY | مفتاح API لمزوّد نموذج اللغة الكبير (LLM) | |
LLM_MODEL | اسم الطراز (مثل claude-sonnet-4-20250514) | |
LLM_BASE_URL | نقطة نهاية مخصصة (تتجاوز الإعداد الافتراضي للمزوّد) |