Nuestro sitio utiliza cookies para garantizar una mejor experiencia de navegación. OK
142 veces compartido 12 Comentarios

Cómo sacar el código fuente de un archivo APK

Tanto para desarrolladores como para curiosos que quiere conocer que es lo que verdaderamente está pasando dentro del dispositivo y con quién se comunica en el exterior. Podemos tener el código fuente de una aplicación con tan solo unos sencillos pasos. Puede que código no sea todo lo limpio que nos gustaría

Ingeniería inversa con un archivo APK ¿es legal?

El proceso para conseguir el código de programación desde un archivo ejecutable o cualquier otro archivo ya compilado se denomina ingeniería inversa. La ingeniería normal, por llamarla de alguna manera sería el propio desarrollo del código fuente.

Esta actividad es legal dependiendo del caso. En cada país la legislación puede ser diferente y puede permitir más o menos. En caso particular de España la legislación permite hacer ingeniería inversa con una serie de condiciones que podemos leer en los artículo 100 de la Ley de Propiedad Intelectual.

code java teaser
Se puede fisgonear en el código. / © ANDROIDPIT

Resumiendo. Vamos a poder extraer el código siempre y cuando seamos propietarios o tengamos licencia de uso, la información no haya sido expuesta previamente y que la información obtenida no se utilice para la comercialización de un programa sustancialmente similar el cual infrinja los derechos de autor.

En nuestro caso principalmente es útil para aprender a desarrollar código viendo ejemplos reales.

Sacar el código de un APK

Para poder leer el código de un archivo con extensión .apk necesitamos varias herramientas y para empezar necesitamos el susodicho archivo APK de la aplicación. Para conseguirlo podemos buscarlo en los repositorios de aplicaciones online o si tenemos la aplicación instalada en el dispositivo podemos extraer la APK desde un explorador de archivos.

A partir de aquí hay varios métodos, varios caminos que llevan más o menos al mismo resultado. Aquí os expongo el que me resulta más sencillo.

woman code 01
Código para todos. / © ANDROIDPIT

Descarga dos herramientas que vamos a necesitar posteriormente. Una es un archivo para exportar las clases del APK a un archivo java  con extensión .jar dex2jar. Y una aplicación para leer los archivos con extensión .jar JD-GUI, disponible para diferentes sistemas.

Haz una copia del archivo APK de la aplicación y cambia la extensión de .apk a .zip. Guárdalo. 

Abre el archivo .zip y extrae el archivo classes.dex. Coloca este archivo en la carpeta descomprimida de dex2jar.

En un lugar vacío de la carpeta pulsa el botón derecho del ratón a la vez que presionas en el teclado shift (en Windows). Del menú elige 'Abrir aquí una ventana de comandos'.

sacar codigo apk
Pasa las clases del APK a un archivo JAR. / © ANDROIDPIT

En la consola que se acaba de abrir  introduce el siguiente comando 'd2j-dex2jar.bat classes.dex'. Pulsa intro y después de unos segundos en la misma carpeta encontraras un nuevo archivo llamado 'classes-dex2jar.jar'. Como alternativa puedes usar la plataforma online APK decompiler.

Con este nuevo archivo 'classes-dex2jar.jar' podemos explorar el código fuente de la aplicación y ver todas sus clases con el programa JD-GUI. 

Descomprime el archivo .zip con el JD-GUI y ejecuta el archivo .exe que encontrarás en su carpeta. Una vez que arranca el programa. Selecciona el icono para abrir un archivo o entra en File > Open file... elige el archivo 'classes-dex2jar.jar' que se encuenta en la carpeta de dex2jar y ábrelo.

Podrás ver las librerías que usa la aplicación y las clases que tiene

sacar codigo apk 02
Código extraído de un archivo APK. / © ANDROIDPIT

Problemas que pueden surgir con el código

Las herramientas de ingeniería inversa no suelen conseguir el código original al 100%. Hay un cierto desfase entre el código que se escribe y el código que se recupera. Por lo general los creadores de una aplicación no le gusta que terceros puedan jugar con el código que tanto trabajo les ha llevado desarrollar.

Para proteger el código de las aplicaciones Google creó hace unos años una herramienta llamada ProGuard. Esta herramienta optimiza el código de la aplicación y lo protege de una posterior ingeniería inversa. Hoy en día la mayoría de las aplicaciones que son open source suelen tener el código optimizado con ProGuard así que el código puede ser muy complicado de entender por la perdida de organización.

¿Has querido saber alguna vez que hace de verdad una aplicación

12 Comentarios

Escribir un nuevo comentario:

Nuestro sitio utiliza cookies para garantizar una mejor experiencia de navegación. Más información

OK