Android

Decompilar APK (app de Android) y obtener código fuente (casi) original

Una de las debilidades de Java (y otros lenguajes que compilan a bytecode) es que se puede decompilar o descompilar, como le quieras llamar. O decompile, si hablas inglés.

Hoy vamos a ver un decompilador de aplicaciones de android, es decir, de apps con extensiones APK.

Estuve probando el decompilador y funciona de maravilla, obtiene casi el mismo código que el original.

Para hacer esta demostración y no hacer nada ilegal, voy a usar el CRUD de SQLite con Android cuyo código fuente está aquí, y su APK está aquí.

Descargo de responsabilidad

Ya deberías saber que esto debe tener algo de ilegal, así que no lo hagas en casa. Si lo haces, es bajo tu propia responsabilidad, no me hago cargo de nada.

Se supone que estos decompiladores son útiles cuando existe una app maliciosa y se quiere analizar su comportamiento.

Obtener código fuente original de APK

El decompilador del que hablo es deguard cuyo sitio está aquí. En el sitio dice:

DeGuard invierte el proceso de ofuscación realizado por las herramientas de ofuscación de Android. Esto permite numerosos análisis de seguridad, incluyendo inspección de código y predicción de bibliotecas.

Para comenzar hay que seleccionar un archivo en donde dice “Select APK File” y luego hacer click en Upload.

1 – Seleccionar app

Cuando la app que vamos a decompilar se haya subido, comenzará el proceso de decompilación en el servidor.

2 – Decompilando apk

Al terminar se mostrará una interfaz amigable. A la izquierda estará un árbol de directorios, el cual contiene los archivos del código fuente.

A la derecha aparece el código fuente del archivo seleccionado.

3 – Resultados de decompilación

Los archivos que deberían importarnos son aquellos que tienen el id de quien lo creó, no los que tienen el prefijo de android, ya que son las librerías propias del sistema.

En mi caso voy a analizar el paquete “in.parzibyte.crudsqlite.controllers” pues parece que no es de android.

4 – Código del controlador decompilado

El archivo es MascotasController.java (incluso supo cuál era el nombre) y si lo comparamos con el original veremos que no hay muchos cambios, solo optimizaciones de código que el compilador hace por nosotros.

5 – Código original

En la parte de abajo podemos descargar el código fuente, la lista de librerías, entre otros.

6 – Descargar código decompilado

Nota: no solo podemos ver ese archivo, podemos ver todo el código; en este caso solo analicé un archivo, pero los demás están ahí, decompilados.

Conclusión

Si quieres ver la diferencia en profundidad, aquí dejo ambos archivos.

El original:

See the gist on github.

El decompilado:

See the gist on github.

Con esto queda claro que nuestro código de Android puede ser leído por cualquier persona que conozca herramientas para decompilar, así que nunca pongas claves o cosas sensibles en tu código.

Te invito a probarlo por ti mismo con la app que puse al inicio.

Por cierto, no he probado con Kotlin pero supongo que también se puede, ya que ambos (Java y Kotlin) compilan para la JVM.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Solución: Unable to extract uploader id con youtube-dl

En mi blog te he enseñado a usar youtube-dl para descargar vídeos con permiso del…

24 horas hace

Enviar foto a Telegram usando cURL y Bot

Siguiendo con los tutoriales que consumen la API de los Bots de Telegram con cURL…

1 día hace

cURL y Telegram: enviar mensaje a Bot

En un post previo te enseñé a enviar un mensaje en nombre de un Bot…

1 día hace

Impresora térmica con Telegram usando Bot

En este artículo te voy a mostrar una guía para imprimir en una impresora térmica…

1 día hace

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

5 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

6 días hace

Esta web usa cookies.