
Desafios práticos para aprender como fazer engenharia reversa de aplicativos Flutter.
Este repositório contém uma série de desafios progressivos projetados para introduzir a engenharia reversa de aplicações Flutter. Como não há muitos posts de blog ou tutoriais que expliquem a reversão de Flutter em detalhes, decidi criar este repositório como uma forma prática de preencher essa lacuna.
O objetivo é construir uma base sólida para entender as características únicas do framework Flutter e as técnicas de análise comumente usadas com ele.
Os desafios são estruturados de forma incremental, começando com conceitos fundamentais e avançando para técnicas intermediárias e mais avançadas, como interceptação de tráfego de rede e bypass de proteções.
Em vez de um writeup tradicional, cada desafio inclui uma solução detalhada, em estilo de post de blog, que guia você passo a passo pelo processo de reversão, mesclando a resolução prática de problemas com teoria relevante, para que os conceitos sejam aprendidos diretamente através da prática.
Se você sentir que está faltando algum pré-requisito, os seguintes recursos são altamente recomendados:
Cada diretório de desafio inclui:
chall<X>.apk: o APK compilado para o desafio;solution/_images/: imagens referenciadas na solução;solution/solution.md: uma solução detalhada, passo a passo;source/: os arquivos fonte da aplicação e as instruções de compilação, para aqueles que desejam modificar o aplicativo e experimentar mais;$ tree
.
├── chall<X>.apk
├── solution
│ ├── _images
│ │ ├── chall<X_Y>.png
│ └── solution.md
└── src
├── how_to_build.md
└── main.dart
Algumas dessas ferramentas requerem configurações específicas. Para simplificar a configuração e garantir a reprodutibilidade, Dockerfiles são fornecidos para algumas dessas ferramentas e podem ser encontrados no diretório /tools.
Ferramentas:
apktool - Ferramenta para descompilar e reconstruir APKs (link)Blutter - Decompilador para aplicações Flutter (link, Dockerfile incluído neste repositório)Frida - Kit de ferramentas de instrumentação dinâmica (link)jadx - Decompilador Android (link)reFlutter - Framework para engenharia reversa em Flutter (link)Burp Suite - Proxy para interceptação de tráfego (link)Este projeto é distribuído sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.
Este repositório é criado exclusivamente para fins educacionais. As técnicas descritas devem ser usadas apenas em aplicações para as quais você tem o direito de analisar ou em ambientes de teste controlados. O autor não assume nenhuma responsabilidade pelo uso indevido das informações contidas neste repositório.