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

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

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

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

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

Категории

Все категории
Loading categories
reFlutter — Flutter Reverse Engineering Framework | Kitploit
Инструменты/GitHubGitHub/ptswarm/reflutter
Android SecurityPacket Sniffing & AnalysisDynamic Analysis (Sandboxing)iOS SecurityReverse EngineeringMobile SecurityBinary AnalysisArchived
GitHubptswarm/reflutter

reFlutter

Flutter Reverse Engineering Framework

Репозиторий
1.5k1884 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

Twitter

stars workflow

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

Ключевые особенности:

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

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

  • Android: arm64, arm32;
  • iOS: arm64;
  • Релиз: Stable, Beta

Установка

root@kitploit:~
# Linux, Windows, MacOS
pip3 install reflutter

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

root@kitploit:~
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

Configure Burp Suite proxy server to listen on *:8083
Proxy Tab -> Options -> Proxy Listeners -> Edit -> Binding Tab

Then enable invisible proxying in Request Handling Tab
Support Invisible Proxying -> true

impact@f:~$ reflutter main.ipa

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

Необходимо указать IP вашего прокси-сервера Burp Suite, который находится в той же сети, что и устройство с Flutter-приложением. Затем настройте прокси в BurpSuite -> Listener Proxy -> вкладка Options

  • Добавьте порт: 8083
  • Привяжите к адресу: All interfaces
  • Обработка запросов: Support invisible proxying = True

Вам не нужно устанавливать какие-либо сертификаты. На устройстве Android также не требуется root-доступ. reFlutter также позволяет обходить некоторые реализации закрепления сертификатов Flutter.

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

Полученный apk-файл необходимо выровнять и подписать. Я использую uber-apk-signer java -jar uber-apk-signer.jar --allowResign -a release.RE.apk. Чтобы увидеть, какой код загружается через DartVM, необходимо запустить приложение на устройстве. Обратите внимание, что вам нужно вручную найти значение _kDartIsolateSnapshotInstructions (например, 0xB000) с помощью бинарного поиска. reFlutter записывает дамп в корневую папку приложения и устанавливает права 777 для файла и папки. Вы можете извлечь файл с помощью команды adb

root@kitploit:~
impact@f:~$ adb -d shell "cat /data/data/<PACKAGE_NAME>/dump.dart" > dump.dart
содержимое файла
root@kitploit:~
Library:'package:anyapp/navigation/DeepLinkImpl.dart' Class: Navigation extends Object {  

String* DeepUrl = anyapp://evil.com/ ;

 Function 'Navigation.': constructor. (dynamic, dynamic, dynamic, dynamic) => NavigationInteractor { 
  
              Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000009270
  
                   }
    
 Function 'initDeepLinkHandle':. (dynamic) => Future<void>* { 
  
              Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000412fe8
  
                   }
    
 Function '_navigateDeepLink@547106886':. (dynamic, dynamic, {dynamic navigator}) => void { 
  
              Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000002638
  
                   }
 
       }
 
Library:'package:anyapp/auth/navigation/AuthAccount.dart' Class: AuthAccount extends Account {

PlainNotificationToken* _instance = sentinel;
 
 Function 'getAuthToken':. (dynamic, dynamic, dynamic, dynamic) => Future<AccessToken*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x00000000003ee548
  
                   }
  
 Function 'checkEmail':. (dynamic, dynamic) => Future<bool*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000448a08
   
                   }

 Function 'validateRestoreCode':. (dynamic, dynamic, dynamic) => Future<bool*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000412c34
   
                   }

 Function 'sendSmsRestorePassword':. (dynamic, dynamic) => Future<bool*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x00000000003efb88
  
                   }
       }

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

Используйте IPA-файл, созданный после выполнения команды reflutter main.ipa. Чтобы увидеть, какой код загружается через DartVM, необходимо запустить приложение на устройстве. reFlutter выводит свои результаты в консольные логи XCode с тегом reflutter.

Планируется

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

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

Движки собираются с помощью reFlutter в Github Actions. Для сборки нужной версии используются коммиты и хэши снимков из этой таблицы. Хэш снимка извлекается из storage.googleapis.com/flutter_infra_release/flutter/<hash>/android-arm64-release/linux-x64.zip

релиз

gif

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

Если вы хотите реализовать свои собственные патчи, поддерживается ручное изменение кода Flutter с помощью специально подготовленного Docker

sudo docker pull ptswarm/reflutter

root@kitploit:~
# Linux, Windows
EXAMPLE BUILD ANDROID ARM64:
    sudo docker run -e WAIT=300 -e x64=0 -e arm=0 -e HASH_PATCH=<Snapshot_Hash> -e COMMIT=<Engine_commit> --rm -iv${PWD}:/t ptswarm/reflutter

FLAGS:
    -e x64=0                         <disables building for x64 archiitechture, use to reduce building time>
    -e arm=0                         <disables building for arm archiitechture, use to reduce building time>
    -e WAIT=300                      <the amount of time in seconds you need to edit source code>
    -e HASH_PATCH=[Snapshot_Hash]    <here you need to specify snapshot hash which matches the engine_commit line of enginehash.csv table best. It is used for proper patch search in reFlutter and for successfull compilation>
    -e COMMIT=[Engine_commit]        <here you specify commit for your engine version, take it from enginehash.csv table or from flutter/engine repo>
Скачать инструмент