Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
reFlutter — Parchea las bibliotecas del motor Flutter para habilitar la ingeniería inversa en tiempo real, la intercepción de tráfico y la omisión de fijación SSL en aplicaciones Android e iOS sin necesidad de root ni instalación de certificados. | Kitploit
Herramientas/GitHubGitHub/impact-i/reflutter
Seguridad AndroidAnálisis Dinámico (Sandboxing)Seguridad iOSIngeniería InversaPruebas de PenetraciónSeguridad Móvil
GitHubimpact-i/reflutter

reFlutter

Parchea las bibliotecas del motor Flutter para habilitar la ingeniería inversa en tiempo real, la intercepción de tráfico y la omisión de fijación SSL en aplicaciones Android e iOS sin necesidad de root ni instalación de certificados.

Ver Repositorio
2.7k29355hace 8 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

stars

Lee más en el blog: https://swarm.ptsecurity.com/fork-bomb-for-flutter/

Este framework ayuda con la ingeniería inversa de aplicaciones Flutter utilizando la versión parcheada de la librería Flutter, que ya está compilada y lista para el reempaquetado de la aplicación. Esta librería tiene el proceso de deserialización de snapshots modificado para permitirte realizar análisis dinámico de forma cómoda.

Características principales:

  • socket.cc está parcheado para la monitorización e interceptación de tráfico;
  • dart.cc está modificado para imprimir clases, funciones y algunos campos;
  • muestra el offset absoluto de código para las funciones;
  • contiene cambios menores para una compilación exitosa;
  • si deseas implementar tus propios parches, se admiten cambios manuales en el código de Flutter utilizando un Dockerfile especialmente diseñado.

Motores compatibles

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

Instalación

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

Uso

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

Opciones:

  • -p, --patch-dump — modo dump: parchea el motor para emitir dump.dart (clases/métodos/offsets) al iniciar, e imprime una pista de frida.js en lugar de las instrucciones del proxy.
  • -n, --no-interact — nunca solicita una IP de Burp (implica 127.0.0.1); útil para motores antiguos en CI.
  • -b <Snapshot_Hash>, --build-engine — modo de compilación del motor: imprime el commit del motor para un hash de snapshot y (cuando se ejecuta dentro de un checkout de flutter/flutter) aplica los parches de código fuente de reFlutter. Consulta scripts/local-release.

Interceptación de tráfico

Necesitas especificar la IP de tu Servidor Proxy Burp Suite ubicado en la misma red donde está el dispositivo con la aplicación Flutter. Luego configura el Proxy en BurpSuite -> Listener Proxy -> Options tab:

  • Añadir puerto: 8083
  • Bind to address: All interfaces
  • Request handling: Support invisible proxying = True

No se requiere instalación de certificados ni acceso root para Android. reFlutter también permite eludir algunas de las implementaciones de certificate pinning de Flutter.

⚠️ Nota: Los motores hasta Flutter 3.24.x inclusive (hash de snapshot 80a49c7111088100a233b2ae788e1f48) todavía llevan la IP del proxy hardcodeada y se parchean en el lugar. A partir de 3.27.x la IP hardcodeada ya no está — configura el proxy directamente en el dispositivo.

En Android

Usa ADB para configurar el proxy del dispositivo:

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

Firma, alinea e instala el APK. Opcionalmente configura TunProxy para enrutar el tráfico a través de Burp Suite.

En iOS

Firma e instala el IPA. Configura Potatso para usar tu servidor proxy Burp Suite.

Uso en Android

El apk resultante debe estar alineado y firmado. Una herramienta recomendada es uber-apk-signer:

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

Ejecuta la aplicación en un dispositivo. Determina _kDartIsolateSnapshotInstructions mediante búsqueda binaria. reFlutter escribe el archivo dump en la carpeta raíz de la aplicación y establece permisos 777. Recupéralo usando:

adb -d shell "cat /data/data/<PACKAGE_NAME>/dump.dart" > dump.dart
contenido del archivo
Library:'package:anyapp/navigation/DeepLinkImpl.dart' Class: Navigation extends Object {
String* DeepUrl = anyapp://evil.com/ ;
...

Uso en iOS

Después de ejecutar reflutter main.ipa, ejecuta la aplicación en el dispositivo. La ruta del archivo dump se imprime en los logs de la consola de Xcode:

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

Recupera el archivo desde el dispositivo.

Frida

frida-tools==13.7.1
frida==16.7.19

Usa los offsets del dump en el script de Frida:

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

Para encontrar _kDartIsolateSnapshotInstructions:

readelf -Ws libapp.so

Busca el campo Value.

Por hacer

  • Mostrar el offset absoluto de código para las funciones;
  • Extraer más cadenas y campos;
  • Añadir parche de socket;
  • Extender el soporte del motor a Debug usando Fork y Github Actions;
  • Mejorar la detección de App.framework y libapp.so dentro del archivo zip

Compilar el motor

Los motores se compilan con scripts/local-release (macOS; compila v2 + v3 para iOS y Android arm64/arm/x64, verifica que cada parche se aplicó y sube los assets de la release) basándose en los datos de enginehash.csv. El commit del motor para un hash de snapshot se resuelve mediante reflutter -b <Snapshot_Hash>. El hash del snapshot se obtiene de:

https://storage.googleapis.com/flutter_infra_release/flutter/<hash>/android-arm64-release/linux-x64.zip
release

gif

Compilación personalizada

El parcheo manual del código de Flutter es compatible usando Docker:

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

Ejecutar con:

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

Ejemplo:

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

Ejemplo: Compilar 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

Flags:

  • -e x64=0: deshabilita la compilación x64
  • -e arm64=0: deshabilita la compilación arm64
  • -e arm=0: deshabilita la compilación arm32
  • -e WAIT=300: tiempo en segundos para modificar el código fuente antes de compilar
  • -e HASH_PATCH: hash del snapshot de enginehash.csv
  • -e COMMIT: hash del commit del motor

Descargar herramienta