
Desafíos prácticos para aprender a realizar ingeniería inversa de aplicaciones Flutter.
Este repositorio contiene una serie de retos progresivos diseñados para introducir la ingeniería inversa de aplicaciones Flutter. Dado que no hay muchas publicaciones en blogs o tutoriales que expliquen la reversión de Flutter en detalle, decidí crear este repositorio como una forma práctica de llenar ese vacío.
El objetivo es construir una base sólida para entender las características únicas del framework Flutter y las técnicas de análisis comúnmente utilizadas con él.
Los retos están estructurados de forma incremental, comenzando con conceptos fundamentales y avanzando hacia técnicas intermedias y más avanzadas, como la interceptación de tráfico de red y la evasión de protecciones.
En lugar de un writeup tradicional, cada reto incluye una solución detallada, al estilo de una entrada de blog, que te guía paso a paso a través del proceso de reversión, combinando la resolución práctica de problemas con la teoría relevante para que los conceptos se aprendan directamente mediante la práctica.
Si crees que te faltan algunos prerrequisitos, se recomiendan encarecidamente los siguientes recursos:
Cada directorio de reto incluye:
chall<X>.apk: el APK compilado para el reto;solution/_images/: imágenes referenciadas en la solución;solution/solution.md: una solución detallada, paso a paso;source/: los archivos fuente de la aplicación y las instrucciones de compilación, para aquellos que quieran modificar la aplicación y experimentar más;$ tree
.
├── chall<X>.apk
├── solution
│ ├── _images
│ │ ├── chall<X_Y>.png
│ └── solution.md
└── src
├── how_to_build.md
└── main.dart
Algunas de estas herramientas requieren configuraciones específicas. Para simplificar la configuración y asegurar la reproducibilidad, se proporcionan Dockerfiles para algunas de estas herramientas y se pueden encontrar en el directorio /tools.
Herramientas:
apktool - Herramienta para descompilar y reconstruir APKs (enlace)Blutter - Descompilador para aplicaciones Flutter (enlace, Dockerfile incluido en este repositorio)Frida - Kit de instrumentación dinámica (enlace)jadx - Descompilador de Android (enlace)reFlutter - Framework para ingeniería inversa de Flutter (enlace)Burp Suite - Proxy para interceptación de tráfico (enlace)Este proyecto se distribuye bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
Este repositorio se crea exclusivamente con fines educativos. Las técnicas descritas solo deben utilizarse en aplicaciones para las que tengas derecho a analizar o en entornos de prueba controlados. El autor no asume ninguna responsabilidad por el mal uso de la información contenida en este repositorio.