Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
reFlutter — Framework de Engenharia Reversa Flutter | Kitploit
Ferramentas/GitHubGitHub/ptswarm/reflutter
Segurança AndroidSniffing e Análise de PacotesAnálise Dinâmica (Sandboxing)Segurança iOSEngenharia ReversaSegurança MóvelAnálise de BináriosArchived
GitHubptswarm/reflutter

reFlutter

Framework de Engenharia Reversa Flutter

Ver Repositório
1.5k188há 4 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Twitter

stars workflow

Este framework ajuda na engenharia reversa de aplicativos Flutter usando a versão patched da biblioteca Flutter que já está compilada e pronta para o reempacotamento do aplicativo. Esta biblioteca tem o processo de desserialização de snapshot modificado para permitir que você realize análise dinâmica de maneira conveniente.

Características principais:

  • socket.cc é patched para monitoramento e interceptação de tráfego;
  • dart.cc é modificado para imprimir classes, funções e alguns campos;
  • contém pequenas alterações para compilação bem-sucedida;
  • se você quiser implementar seus próprios patches, há suporte para alteração manual do código Flutter usando um Dockerfile especialmente criado

Motores suportados

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

Instalação

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

Interceptação de tráfego

Você precisa especificar o IP do seu Servidor Proxy Burp Suite localizado na mesma rede onde o dispositivo com o aplicativo Flutter está. Em seguida, você deve configurar o Proxy em BurpSuite -> Listener Proxy -> Guia Options

  • Adicione a porta: 8083
  • Vincule ao endereço: All interfaces
  • Manipulação de solicitação: Support invisible proxying = True

Você não precisa instalar nenhum certificado. Em um dispositivo Android, você também não precisa de acesso root. reFlutter também permite contornar algumas implementações de certificate pinning do Flutter.

Uso no Android

O apk resultante deve ser alinhado e assinado. Eu uso uber-apk-signer java -jar uber-apk-signer.jar --allowResign -a release.RE.apk. Para ver qual código é carregado através do DartVM, você precisa executar o aplicativo no dispositivo. Observe que você deve encontrar manualmente o valor de _kDartIsolateSnapshotInstructions (ex. 0xB000) usando uma busca binária. reFlutter escreve o dump na pasta raiz do aplicativo e define permissões 777 para o arquivo e a pasta. Você pode puxar o arquivo com o comando adb

root@kitploit:~
impact@f:~$ adb -d shell "cat /data/data/<PACKAGE_NAME>/dump.dart" > dump.dart
conteúdo do arquivo
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 no iOS

Use o arquivo IPA criado após a execução do comando reflutter main.ipa. Para ver qual código é carregado através do DartVM, você precisa executar o aplicativo no dispositivo. reFlutter imprime sua saída nos logs do console no XCode com a tag reflutter.

A fazer

  • Exibir deslocamento absoluto do código para funções;
  • Extrair mais strings e campos;
  • Adicionar patch do socket;
  • Estender suporte do motor para Debug usando Fork e Github Actions;
  • Melhorar detecção de App.framework e libapp.so dentro do arquivo zip

Construir motor

Os motores são construídos usando reFlutter no Github Actions para construir a versão desejada, commits e hashes de snapshot são usados a partir desta tabela. O hash do snapshot é extraído de storage.googleapis.com/flutter_infra_release/flutter/<hash>/android-arm64-release/linux-x64.zip

release

gif

Construção personalizada

Se você quiser implementar seus próprios patches, a alteração manual do código Flutter é suportada usando um Docker especialmente criado

sudo docker pull ptswarm/reflutter

root@kitploit:~
# Linux, Windows
EXEMPLO DE CONSTRUÇÃO 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                         <desabilita a construção para arquitetura x64, use para reduzir o tempo de construção>
    -e arm=0                         <desabilita a construção para arquitetura arm, use para reduzir o tempo de construção>
    -e WAIT=300                      <quantidade de tempo em segundos que você precisa para editar o código fonte>
    -e HASH_PATCH=[Snapshot_Hash]    <aqui você precisa especificar o hash do snapshot que melhor corresponde à linha engine_commit da tabela enginehash.csv. É usado para a busca adequada do patch no reFlutter e para a compilação bem-sucedida>
    -e COMMIT=[Engine_commit]        <aqui você especifica o commit para sua versão do motor, obtenha da tabela enginehash.csv ou do repositório flutter/engine>
Baixar ferramenta