
Suite open-source de tests de sécurité mobile pour iOS et Android. Anciennement Passionfruit.
Boîte à outils d'instrumentation d'applications mobiles au moment de l'exécution, propulsée par Frida. Inspectez, interceptez et modifiez des applications mobiles via une interface Web.
Elle prend désormais en charge iOS et Android !
Nécessite un serveur Frida exécuté sur votre appareil. Suivez d'abord les guides d'installation officiels (Android).
npm (recommandé, nécessite Node.js 22.18+)
npm install -g igf
igf
Ou exécutez sans installation (nécessite Node.js 22.18+)
npx igf
Binaires précompilés pour macOS, Linux et Windows disponibles sur GitHub Releases. Le développement à partir des sources comme les exécutables précompilés utilisent Node.js ; voir le guide de développement pour le flux de travail npm.
igf [options] Démarre le serveur (par défaut)
Options :
--frida <16 | 17> Version de Frida à utiliser (par défaut : 17)
--host <host> Hôte à utiliser (par défaut : 127.0.0.1)
--port <port> Port à utiliser (par défaut : 31337)
--project <path> Répertoire du projet pour données/cache/journaux (par défaut : .igf dans le cwd)
--no-open Ne pas ouvrir le navigateur au démarrage
--help, -h Affiche le message d'aide
Les options en ligne de commande priment sur les variables d'environnement lorsque les deux sont définies.
Ce projet n'inclut pas de contournements intégrés pour les protections anti-altération :
Justification : Les solutions RASP (Runtime Application Self-Protection) évoluent en permanence pour détecter les frameworks d'instrumentation. Maintenir des contournements efficaces exige un effort continu pour suivre les nouvelles méthodes de détection, ce qui introduit une charge de maintenance importante et des risques potentiels de stabilité. Ces contournements sont également très spécifiques à chaque application, ce qui rend fragiles les solutions généralistes.
Plutôt que de fournir des contournements intégrés fragiles, Grapefruit se concentre sur des capacités d'instrumentation et d'inspection qui se combinent bien avec des outils de contournement dédiés.
Approches recommandées pour les évaluations autorisées lorsqu'un contournement RASP est nécessaire :
Frida Syscall Tracer — Utilisez frida-strace (Frida 17.8.0+) pour tracer les appels système dans le processus cible. Cela aide à identifier les artefacts de détection et à déterminer quels correctifs sont nécessaires avant d'attacher Grapefruit :
frida-strace -U -f com.example.app
Voir les notes de version de Frida 17.8.0 pour plus de détails.
Architecture multi-sessions — Frida prend en charge plusieurs sessions attachées au même processus. Lancez d'abord une session séparée avec vos scripts de contournement RASP, puis démarrez Grapefruit. Lorsque Grapefruit détecte que l'application cible est déjà en cours d'exécution, il s'attache au processus existant plutôt que de le relancer, préservant ainsi les contournements déjà en vigueur.
Grapefruit se lie à 127.0.0.1 par défaut et ne dispose d'aucune authentification intégrée. L'interface Web et l'API sont accessibles à tout processus local. Bien que les requêtes cross-origin soient bloquées par défaut (pas d'en-têtes CORS, Socket.IO rejette les connexions cross-origin), cela ne suffit pas pour un environnement partagé ou distant.
Si vous avez besoin d'un accès distant ou d'une sécurité multi-utilisateurs, placez Grapefruit derrière un proxy inverse authentifié tel que Caddy pour le TLS, le contrôle d'accès et la journalisation. N'exposez pas Grapefruit directement sur le réseau sans authentification.
| Variable | Description | Défaut |
|---|
HOST | Adresse de liaison du serveur | 127.0.0.1 |
PORT | Port du serveur | 31337 |
FRIDA_VERSION | Version majeure de Frida (16 ou 17) | 17 |
FRIDA_TIMEOUT | Délai d'attente des opérations Frida (ms) | 1000 |
PROJECT_DIR | Répertoire du projet pour données/cache/journaux | .igf dans le cwd |
LLM_PROVIDER | Fournisseur d'IA (anthropic, openai, gemini, openrouter) | |
LLM_API_KEY | Clé API pour le fournisseur LLM | |
LLM_MODEL | Nom du modèle (p. ex. claude-sonnet-4-20250514) | |
LLM_BASE_URL | Point de terminaison personnalisé (remplace le défaut du fournisseur) |