Hay herramientas que te permiten ver el código fuente y recursos (imágenes, archivos, etc.) de aplicaciones Android empaquetadas en archivos .apk, ya que generalmente los archivos .apk suelen tener el código ofuscado, es decir (en palabras sencillas) tener el código inentendible para el usuario y así evitar su piratería.
Una vez que tengas una aplicación (un archivo .apk) que te interesa conocer su interior tu puedes seguir el siguiente flujo para descompilarlo.
Un .apk es un archivo comprimido en formato .zip y para extraerlo puedes hacer cualquiera de lo siguiente:
- Cambiar la extensión de .apk a .zip y descomprimirlo normalmente.
- Abrir el .apk con un programa compresor (por ejemplo WinRar en Windows) y extraerlo.
Una vez extraido podrás ver todos los archivos que usa la aplicación mas o menos como si vieras un proyecto Android en desarrollo, pero los archivos .xml estarán codificados y el código fuente Java estarán empaquetados en un archivo .dex.
Convertir de .dex a .jar
dex2jar es una herramienta para convertir los archivos .dex de un proyecto Android a un archivo .jar de Java que contiene los archivos .class.
d2j-dex2jar.sh classes.dex
Convertir de .jar a .java
Un archivo .jar de Java contiene las clases compiladas de los archivos .java, extraer o descompilar estos archivos se lo puede hacer con la herramienta Java Decompiler.
Decodificar archivos .xml de un .apk
Cuando extraes los archivos .xml de un .apk verás que solo tenemos archivos codificados e inentendibles, para verlos como si estuvieran dentro un proyecto en desarrollo puedes usar android4me.
El modo de uso es mediante una terminal (consola o línea de comandos) de la siguiente forma:
java -jar AXMLPrinter.jar AndroidManifest.xml > XmlDecodificado.xml
Si bien hay herramientas que te permiten modificar directamente ciertas partes de la aplicación y volverlas a compilar en un archivo .apk, esta es una manera de reconstruir el proyecto con todos los elementos y ver ciertos trozos de recursos o código que se requiera.