Categorías: Programacion

Ofuscando nuestro código Java

El otro día abordábamos cómo mediante ingeniería inversa, podían desempaquetar nuestra aplicación Java y extraer todas nuestras clases y el código de nuestra aplicación. Hoy os traemos la defensa a este ataque.

El código para a ofuscar escrito en Java

Partiremos del ejemplo del otro día y de la clase Game.class de la que extraíamos el código fuente. Como se puede ver en la imagen, tenemos la función Game y todo el código de la misma:

El software para ofuscar el código Java

Para realizar la ofuscación del código Java para que no nos puedan extraer el código fuente, vamos a utilizar el software ProGuard

Ofuscando el código paso a paso

Lo primero que debemos hacer es configurar que archivos se van a procesar, las tres librerías en azul están sacadas del propio proyecto descomprimido:

Luego debemos desmarcar todas las opciones de “Shrinking”, “Optimization” e “Information”, para ir a la pestaña Obfuscation y marcar las opciones que queramos, en mi caso las siguientes:

Luego desde “Process” le damos a que lo procese y nos generará un nuevo archivo con extensión .jar ofuscado:

Ahora lo que tenemos que hacer es desempaquetar el .jar como hicimos en la entrada anterior y ver que contiene la carpeta:

Como podemos ver, no están los archivos, así que si los buscamos por todo el conjunto de carpetas que tenemos, encontramos que hay archivos con nombres raros distribuidos por múltiples carpetas:

Para empezar ya se hace muy difícil seguir el proyecto al estar tan subdividido en ficheros, pero si abrimos uno y extraemos su código con Show my code, vemos lo siguiente:

Lo que podemos apreciar en la imagen es que todas las clases han cambiado de nombre y algunos métodos también, con lo cual seguir el código se nos va a hacer muy complejo. El código sigue siendo el mismo, se puede ejecutar, funcionará, se puede extraer el original (seguramente se posible atacar esta ofuscación, pero se puede hacer más compleja), pero lo que hemos conseguido es no ponerle el trabajo nada fácil a quien nos quiera obtener el código fuente de nuestra aplicación.

Jorge Durán

Entusiasta de la tecnología desde los 10 años, desarrollador y creador de varios proyectos de software y autodidacta por naturaleza. Ingeniero Informático por la USAL y .Net backend developer en idealista.

Share
Publicado por
Jorge Durán

Recent Posts

Docker: conceptos principales y tutorial paso a paso

Hoy queremos hablaros de Docker un proyecto que cada día es más usado, porque permite…

3 años hace

Crea diagramas rápidamente usando código

Cada vez estamos más acostumbrados a usar código para generar la infraestructura (IaC), documentar nuestro…

3 años hace

Procesamiento del lenguaje natural con ElasticSearch

Uno de los problemas que se presentan con una mayor frecuencia hoy en día, es…

4 años hace

Elige tecnología clásica y aburrida

Uno de los problemas que solemos tener los programadores, es que nos gusta estar a…

4 años hace

Cómo usar Docker en Windows

Docker es una de las herramientas más usadas por los desarrolladores, sin embargo, usarlo en…

4 años hace

Analiza el coste del uso de JavaScript

Como seguramente sabrás el uso de JavaScript ha crecido exponencialmente en los últimos tiempos, sin…

4 años hace