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.
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:
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
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.
Hoy queremos hablaros de Docker un proyecto que cada día es más usado, porque permite…
Cada vez estamos más acostumbrados a usar código para generar la infraestructura (IaC), documentar nuestro…
Uno de los problemas que se presentan con una mayor frecuencia hoy en día, es…
Uno de los problemas que solemos tener los programadores, es que nos gusta estar a…
Docker es una de las herramientas más usadas por los desarrolladores, sin embargo, usarlo en…
Como seguramente sabrás el uso de JavaScript ha crecido exponencialmente en los últimos tiempos, sin…