Tuesday, March 20, 2012

'OFUSCACION' DE CODIGO CON 'PROGUARD'

En muchas oportunidades es común que algunos PROGRAMADORES FREELANCE dependiendo del contrato que hayan negociado, deseen proteger su código, JAR, WAR, etc, para que de esta manera la empresa o cliente ante alguna modificación requería de su servicio otra vez. El método de encriptación aplicado se le conoce como OFUSCAR y existen en el mercado algunas herramientas que nos facilitan esta forma. Buscando alguna que me convenza me encontré con una muy buena llamada: ProGuard y pasare a describirla.

ProGuard es una librería hecha en JAVA que nos permite OPTIMIZAR y OFUSCAR (dificultar la visión) del código JAVA una vez que este esté compilado. También, optimiza el ByteCode al eliminar líneas de código que no se utilizan, cambia de nombre las clases, campos y métodos con nombres cortos haciendo el código casi indescifrable.

Para descargar ProGuard vamos a: http://proguard.sourceforge.net

Para Dummy preparado me base en uno más simple de Internet al cual mejore y detalle la explicación para facilitar conocimiento de su manejo.

REQUERIMIENTO:

1. Eclipse (en mi caso v3.6).
2. El descomprimido de ProGuard (Dentro viene con su interfaz grafica).
3. El decompilador Java JD-GUI v0.3.3.

En si el Dummy lo que hace es generar en base a un JAR_ORIGINAL por ejemplo otro JAR_OFUSCADO el cual funciona perfectamente igual que el anterior pero el cual si lo decompilamos mediante alguna herramienta decompiladora el código será ilegible ya sea en lo relacionado a OBJETOS, CLASES, METODOS, VARIABLES, DECLARACIONES, etc., esto hará que tu código no lo puedan alterar. También, ProGuard brinda en la generación la capacidad de MEJORAR el código existente eliminando trozos de código que no es usado, reduciendo en tamaño significativamente del JAR, generando también un archivo de EQUIVALENCIA de lo que se ha OFUSCADO y finalmente, generando una plantilla de CONFIGURACION para que al momento de volver a querer OFUSCAR dicho JAR ya no tener que hacer todos los pasos otra vez.

Para mas detalle descargar el ejemplo completo descargarlo de: AQUÌ.

2 comments:

Reiny Rodriguez said...

Como puedo ofuscar un codigo java y mantener la coneccion a la base de datos, pues al ofuscar el codigo ya no quiere conectar, me imagino es porque cambian los datos de acceso.

JAVAMAN said...

Los parametros de conexion a la BD por buena práctica debería ser manejada externamente osea en un properties externo si es JDBC normal o si es remoto por medio de JNDI.