
Набор инструментов с открытым исходным кодом для тестирования безопасности мобильных устройств на iOS и Android. Ранее — Passionfruit.
Набор инструментов для инструментирования мобильных приложений во время выполнения на основе 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 Releases. Как исходный код для разработки, так и готовые исполняемые файлы используют Node.js; см. руководство по разработке для рабочего процесса с npm.
igf [options] Запустить сервер (по умолчанию)
Параметры:
--frida <16 | 17> Версия Frida для использования (по умолчанию: 17)
--host <host> Адрес для привязки (по умолчанию: 127.0.0.1)
--port <port> Порт для привязки (по умолчанию: 31337)
--project <path> Каталог проекта для данных/кэша/журналов (по умолчанию: .igf в текущем каталоге)
--no-open Не открывать браузер при запуске
--help, -h Показать справку
Параметры командной строки имеют приоритет над переменными окружения, если заданы оба.
Этот проект не включает встроенные обходы защит от модификации:
Обоснование: Решения RASP (Runtime Application Self-Protection) постоянно развиваются, чтобы обнаруживать фреймворки инструментирования. Поддержание эффективных обходов требует постоянных усилий для отслеживания новых методов обнаружения, что создаёт значительную нагрузку на сопровождение и потенциальные проблемы со стабильностью. Эти обходы также сильно зависят от конкретного приложения, что делает универсальные решения хрупкими.
Вместо поставки хрупких встроенных обходов Grapefruit фокусируется на возможностях инструментирования и инспекции, которые хорошо сочетаются со специализированными инструментами обхода.
Рекомендуемые подходы для авторизованных оценок, когда требуется обход RASP:
Frida Syscall Tracer — Используйте 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 доступны любому локальному процессу. Хотя межсайтовые запросы по умолчанию блокируются (нет CORS-заголовков, Socket.IO отклоняет межсайтовые соединения), этого недостаточно для общей или удалённой среды.
Если вам нужен удалённый доступ или многофункциональная безопасность, поместите Grapefruit за аутентифицирующим обратным прокси, таким как Caddy, для TLS, контроля доступа и журналирования. Не открывайте Grapefruit напрямую в сеть без аутентификации.
| Переменная | Описание | По умолчанию |
|---|
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 | Пользовательская конечная точка (переопределяет адрес провайдера по умолчанию) |