Ofuscando nuestro código Java

por:

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:

Ofuscando el siguiente codigo Java

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

El software para ofuscar el código Java

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:

Ofuscando código Java paso a paso

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:

Ofuscando código Java paso a paso

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

Ofuscando código Java paso a paso

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

Ofuscando código Java paso a paso

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:

Ofuscando código Java paso a paso

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:

http://www.showmycode.com/

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.

Un comentario en “Ofuscando nuestro código Java”

  1. Fabian

    Buenos tardes….

    Seguí todas las instrucciones y funciona a la perfección pero tengo una inquietud. Necesito ofuscar todas mis clases pero necesito omitir los nombre de los métodos públicos ya que estoy haciendo una librería y por obvias razones no debo de ofuscar esos nombres.

    Intente buscar otras configuración en proguard pero sin éxito.

    Espero me pueda responder a mi mensaje para así solucionar el problema en el que me encuetro

    Responder

Deja una Respuesta