sábado, 5 de abril de 2008

Cómo obtener el código fuente partiendo del jar

Teniendo un midlet en forma de archivo .jar se puede obtener el código fuente mediante un descompilador. Este proceso analiza bytecode y convierte los archivos .class a .java.

Existen varios descompiladores de java, en este ejemplo se utilizará Jode.

Los pasos para descompilar el bytecode de un jar son:
1. Descargar Jode
Buscar y descargar el archivo jode-1.1.2-pre1.jar del proyecto jode en sourceforge.

2. Determinar las versiones de CLCD y MIDP del jar
Abrir el archivo .jar con una aplicación que maneje archivos zip.
Dentro del archivo en la carpeta META-INF se encuentra el archivo MANIFEST.MF, extraer y abrirlo con un editor de texto.
Tomar nota de las versiones.

3. Configurar la variable classpath
Se debe configurar esta variable para incluir la referencia a las clases que se determinó en el paso 2.
Si está instalado Java Sun Wireless Toolkit y el midlet utiliza CLDC 1.0 y MIDP 2.0 sería por ejemplo:
set CLASSPATH=C:\Documents and Settings\Luis\My Documents\jode-1.1.2-pre1.jar;C:\WTK2.5.2\lib\cldapi10.jar;C:\WTK2.5.2\lib\midpapi20.jar
4. Ejecutar jode
Para ejecutar el descompilador se utiliza la sintaxis:
java jode.decompiler.Main --dest srcdir program.jar

Esto dejará el código fuente original en el directorio srcdir. Cuando el midlet recurra a algún paquete opcional se debe incluir también en el classpath.

Este instructivo debería ser suficiente para las aplicaciones más sencillas, en algunos casos estos pasos no logran recontruir el código fuente completo.

4 comentarios:

Anónimo dijo...

Menudo nombre le pusieron al proyecto!! xDDDDDDDDDDDDDDD
casi me parto

Ing. Enrique Martinez dijo...

Soy un nuevo usuario de netbeans mobility pack y tengo un problema con una aplicación que estoy haciendo, necesito enviar tonos dtmf a partir de la aplicación que estoy haciendo, pero no se como activar esa función del celular, ¿alguien me puede ayudar?

Karlitocs dijo...

hola soy nuevo en esto, me gustaria saber como y donde se configura el classpath gracias

Ben-uR dijo...

En la consola de comandos se configura la variable classpath... Sólo ve tales líneas como comandos.
En el caso de Windows: Inicio - Ejecutar - cmd.
Ojalá pudieras poner mas detalles sobre el classpath, no me queda claro el por qué de las cosas.