La ingeniería inversa es un proceso con el cual mediante ciertas herramientas, intentamos saber de que está hecho un objeto, como fue construido y cual es su funcionamiento, por lo que este proceso puede ser aplicado tanto a productos de software como dispositivos tecnológicos o alimentos.

El lenguaje nativo en el cual se programan las aplicaciones Android es Java, cuando creamos una aplicación en este lenguaje y generamos un .JAR (que es como si fuera el ejecutable) este genera ciertos archivos los cuales son empaquetados para trabajar en conjunto, por lo que con cualquier compresor podemos extraer estos archivos.

En Android sucede de la misma manera, solo que a diferecia de las aplicaciones Java en las que los códigos fuentes se guardan en los archivos .Class, estos se guardan en archivos .dex, los cuales deberemos transformar en .Jar para posteriormente decompilar dicho paquete y ver el código fuente de la aplicación.

Me he tomado el tiempo para escribir un “paper” sobre ello, en el que explico el proceso, para lo cual aprenderemos a usar Dex2Jar para convertir los archivos .dex a .jar y luego descompilarlos con una aplicación llamada JD-GUI. En otra ocasión si es posible veremos como editar el código fuente y recompilar los ficheros .apk.

Enlaces: Dex2jar, JD-GUI

El tomo II de esta serie de libros te explicará como se puede llegar a modificar las aplicaciones y recompilarlas nuevamente.