Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
reFlutter — Framework de ingeniería inversa de Flutter | Kitploit
Herramientas/GitHubGitHub/ptswarm/reflutter
Seguridad AndroidSniffing y Análisis de PaquetesAnálisis Dinámico (Sandboxing)Seguridad iOSIngeniería InversaSeguridad MóvilAnálisis de BinariosArchived
GitHubptswarm/reflutter

reFlutter

Framework de ingeniería inversa de Flutter

Ver Repositorio
1.5k188hace 4 añosRevisado 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

Twitter

stars workflow

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 modificado el proceso de deserialización de instantáneas para permitirle realizar análisis dinámicos de una manera conveniente.

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;
  • contiene cambios menores para una compilación exitosa;
  • si desea implementar sus propios parches, se admite el cambio manual de código Flutter utilizando un Dockerfile especialmente diseñado.

Motores compatibles

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

Instalación

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

Uso

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

Interceptación de tráfico

Debe especificar la IP de su servidor proxy Burp Suite ubicado en la misma red donde está el dispositivo con la aplicación Flutter. A continuación, debe configurar el proxy en BurpSuite -> Listener Proxy -> Pestaña Options

  • Agregue puerto: 8083
  • Enlazar a dirección: All interfaces
  • Manejo de solicitudes: Support invisible proxying = True

No necesita instalar ningún certificado. En un dispositivo Android, tampoco necesita acceso root. reFlutter también permite omitir algunas implementaciones de certificate pinning de Flutter.

Uso en Android

El apk resultante debe estar alineado y firmado. Yo uso uber-apk-signer java -jar uber-apk-signer.jar --allowResign -a release.RE.apk. Para ver qué código se carga a través de DartVM, debe ejecutar la aplicación en el dispositivo. Tenga en cuenta que debe encontrar manualmente a qué equivale _kDartIsolateSnapshotInstructions (ej. 0xB000 ) mediante una búsqueda binaria. reFlutter escribe el volcado en la carpeta raíz de la aplicación y establece permisos 777 al archivo y carpeta. Puede extraer el archivo con el comando adb

root@kitploit:~
impact@f:~$ adb -d shell "cat /data/data/<PACKAGE_NAME>/dump.dart" > dump.dart
contenido del archivo
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
  
                   }
       }

Uso en iOS

Utilice el archivo IPA creado después de la ejecución del comando reflutter main.ipa. Para ver qué código se carga a través de DartVM, debe ejecutar la aplicación en el dispositivo. reFlutter imprime su salida en los registros de la consola en XCode con la etiqueta reflutter.

Pendientes

  • Mostrar el desplazamiento absoluto de código para funciones;
  • Extraer más cadenas y campos;
  • Agregar 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

Construcción del motor

Los motores se construyen usando reFlutter en Github Actions. Para construir la versión deseada, se usan commits y hashes de instantáneas de esta tabla. El hash de la instantánea se extrae de storage.googleapis.com/flutter_infra_release/flutter/<hash>/android-arm64-release/linux-x64.zip

release

gif

Construcción personalizada

Si desea implementar sus propios parches, se admite el cambio manual de código Flutter utilizando un Docker especialmente diseñado.

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                         <desactiva la construcción para arquitectura x64, úselo para reducir el tiempo de construcción>
    -e arm=0                         <desactiva la construcción para arquitectura arm, úselo para reducir el tiempo de construcción>
    -e WAIT=300                      <la cantidad de tiempo en segundos que necesita para editar el código fuente>
    -e HASH_PATCH=[Snapshot_Hash]    <aquí debe especificar el hash de instantánea que mejor coincida con la línea engine_commit de la tabla enginehash.csv. Se usa para la búsqueda adecuada de parches en reFlutter y para una compilación exitosa>
    -e COMMIT=[Engine_commit]        <aquí especifica el commit para su versión del motor, tómelo de la tabla enginehash.csv o del repositorio flutter/engine>
Descargar herramienta