Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
reFlutter — Модифицирует библиотеки движка Flutter, чтобы обеспечить обратную разработку во время выполнения, перехват трафика и обход привязки SSL для приложений Android и iOS без root-доступа или установки сертификатов. | Kitploit
Инструменты/GitHubGitHub/impact-i/reflutter
Безопасность AndroidДинамический анализ (песочница)Безопасность iOSОбратная инженерияТестирование на ПроникновениеМобильная безопасность
GitHubimpact-i/reflutter

reFlutter

Модифицирует библиотеки движка Flutter, чтобы обеспечить обратную разработку во время выполнения, перехват трафика и обход привязки SSL для приложений Android и iOS без root-доступа или установки сертификатов.

Репозиторий
2.7k293296 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

stars

Подробнее в блоге: https://swarm.ptsecurity.com/fork-bomb-for-flutter/

Этот фреймворк помогает в обратной разработке Flutter-приложений, используя пропатченную версию библиотеки Flutter, которая уже скомпилирована и готова к переупаковке приложения. В этой библиотеке процесс десериализации снапшота изменён так, чтобы вы могли удобно выполнять динамический анализ.

Ключевые возможности:

  • socket.cc пропатчен для мониторинга и перехвата трафика;
  • dart.cc изменён для вывода классов, функций и некоторых полей;
  • отображение абсолютного смещения кода для функций;
  • содержит незначительные изменения для успешной компиляции;
  • если вы хотите реализовать собственные патчи, ручные изменения кода Flutter поддерживаются с помощью специально подготовленного Dockerfile.

Поддерживаемые движки

  • Android: arm64, arm32;
  • iOS: arm64;
  • Release: Stable, Beta

Установка

# Linux, Windows, MacOS
pip3 install reflutter==0.8.6

Использование

impact@f:~$ reflutter main.apk

Please enter your Burp Suite IP: <input_ip>

SnapshotHash: 8ee4ef7a67df9845fba331734198a953
The resulting apk file: ./release.RE.apk
Please sign the apk file

impact@f:~$ reflutter main.ipa

Опции:

  • -p, --patch-dump — режим дампа: пропатчить движок так, чтобы при запуске выводился dump.dart (классы/методы/смещения), и вывести подсказку по frida.js вместо инструкций по прокси.
  • -n, --no-interact — никогда не запрашивать Burp IP (подразумевает 127.0.0.1); полезно для старых движков в CI.
  • -b <Snapshot_Hash>, --build-engine — режим сборки движка: вывести коммит движка для хеша снапшота и (при запуске внутри checkout flutter/flutter) применить исходные патчи reFlutter. См. scripts/local-release.

Перехват трафика

Вам нужно указать IP вашего прокси-сервера Burp Suite, расположенного в той же сети, что и устройство с Flutter-приложением. Затем настройте прокси в BurpSuite -> Listener Proxy -> Options tab:

  • Добавить порт: 8083
  • Bind to address: All interfaces
  • Request handling: Support invisible proxying = True

Для Android не требуется установка сертификата или root-доступ. reFlutter также позволяет обойти некоторые реализации certificate pinning во Flutter.

⚠️ Примечание: Движки вплоть до Flutter 3.24.x включительно (хеш снапшота 80a49c7111088100a233b2ae788e1f48) всё ещё содержат жёстко заданный IP прокси и патчатся на месте. Начиная с 3.27.x жёстко заданный IP отсутствует — настраивайте прокси непосредственно на устройстве.

На Android

Используйте ADB для настройки прокси устройства:

adb -s <device> shell "settings put global http_proxy <proxy_ip:port>"

Подпишите, выровняйте и установите APK. При необходимости настройте TunProxy для маршрутизации трафика через Burp Suite.

На iOS

Подпишите и установите IPA. Настройте Potatso для использования вашего прокси-сервера Burp Suite.

Использование на Android

Полученный apk должен быть выровнен и подписан. Рекомендуемый инструмент — uber-apk-signer:

java -jar uber-apk-signer.jar --allowResign -a release.RE.apk

Запустите приложение на устройстве. Определите _kDartIsolateSnapshotInstructions с помощью бинарного поиска. reFlutter записывает файл дампа в корневую папку приложения и устанавливает права 777. Получите его с помощью:

adb -d shell "cat /data/data/<PACKAGE_NAME>/dump.dart" > dump.dart
содержимое файла
Library:'package:anyapp/navigation/DeepLinkImpl.dart' Class: Navigation extends Object {
String* DeepUrl = anyapp://evil.com/ ;
...

Использование на iOS

После запуска reflutter main.ipa выполните приложение на устройстве. Путь к файлу дампа выводится в логах консоли Xcode:

Current working dir: /private/var/mobile/Containers/Data/Application/<UUID>/dump.dart

Получите файл с устройства.

Frida

frida-tools==13.7.1
frida==16.7.19

Используйте смещения из дампа в скрипте Frida:

frida -U -f <package> -l frida.js

Чтобы найти _kDartIsolateSnapshotInstructions:

readelf -Ws libapp.so

Ищите поле Value.

Планы

  • Отображение абсолютного смещения кода для функций;
  • Извлечение большего количества строк и полей;
  • Добавить патч сокета;
  • Расширить поддержку движка до Debug с помощью Fork и Github Actions;
  • Улучшить обнаружение App.framework и libapp.so внутри zip-архива

Сборка движка

Движки собираются с помощью scripts/local-release (macOS; собирает v2 + v3 для iOS и Android arm64/arm/x64, проверяет, что каждый патч применён, и загружает артефакты релиза) на основе данных из enginehash.csv. Коммит движка для хеша снапшота определяется через reflutter -b <Snapshot_Hash>. Хеш снапшота получается из:

https://storage.googleapis.com/flutter_infra_release/flutter/<hash>/android-arm64-release/linux-x64.zip
релиз

gif

Пользовательская сборка

Ручное патчирование кода Flutter поддерживается с помощью Docker:

git clone https://github.com/Impact-I/reFlutter && cd reFlutter
docker build -t reflutter -f Dockerfile .

Запуск:

docker run -it -v "$(pwd):/t" -e HASH_PATCH=<Snapshot_Hash> -e COMMIT=<Engine_commit> reflutter

Пример:

docker run -it -v "$(pwd):/t" -e HASH_PATCH=aa64af18e7d086041ac127cc4bc50c5e -e COMMIT=d44b5a94c976fbb65815374f61ab5392a220b084 reflutter

Пример: сборка Android ARM64 (Linux/Windows)

docker run -e WAIT=300 -e x64=0 -e arm=0 -e HASH_PATCH=<Snapshot_Hash> -e COMMIT=<Engine_commit> --rm -iv${PWD}:/t reflutter

Флаги:

  • -e x64=0: отключает сборку x64
  • -e arm64=0: отключает сборку arm64
  • -e arm=0: отключает сборку arm32
  • -e WAIT=300: время в секундах на изменение исходников перед сборкой
  • -e HASH_PATCH: хеш снапшота из enginehash.csv
  • -e COMMIT: хеш коммита движка

Скачать инструмент