Ingeniería Inversa en Aplicación JAVA y JNLP

En lo personal nunca me ha gustado JAVA como lenguaje de programación, siempre hice los trabajos universitarios con este lenguaje por obligación pero nunca me convenció del todo, ya que es mas lento que otros lenguajes y es muy sencillo decompilar un código creado con java utilizando herramientas gratuitas como Java Decompiler (aunque se puede ofuscar el código). No estoy diciendo que sea un mal lenguaje de programación, es mas tiene varias ventajas frente a muchos otros lenguajes, como el echo de ser multiplataforma y que prácticamente existen clases para casi todo lo que necesitas hacer, solo digo que a mi en lo personal no me pasa.

Ingeniería Inversa en Aplicación JAVA y JNLP

En esta ocasión les traigo un vídeo creado por JavaGuru en el que nos enseña de una forma practica, como realizar ingeniería inversa a un juego de ajedrez desarrollado en JAVA y JNLP, el vídeo muestra como eliminar una de las restricciones implementadas en este juego, pero los conceptos pueden ser aplicados en cualquier aplicación desarrollada en JAVA y que utilice JNLP.
<>

Ingeniería inversa en Java: qué se analiza

El valor del artículo original sigue intacto en su punto central: el bytecode de Java no es un binario opaco. Los programas Java se compilan a un formato intermedio que se almacena en archivos `.class`, empaquetados normalmente en archivos `.jar`, y ese formato conserva suficiente estructura como para que los descompiladores reconstruyan código fuente legible con herramientas gratuitas. Para un auditor, esa característica convierte cada aplicación Java en un objetivo transparente: lo que el desarrollador dejó en el cliente, el analista lo puede leer.

Lo que busca una revisión de ingeniería inversa aplicada a seguridad es conocido: lógica de negocio expuesta en el cliente que debería residir en el servidor, secretos embebidos como credenciales, claves o endpoints, y validaciones implementadas solo del lado cliente sin la correspondiente verificación en el servidor. Cada uno de esos hallazgos es una puerta de entrada potencial, no una curiosidad técnica.

Una nota de honestidad sobre el contexto: JNLP y Java Web Start son una tecnología histórica, descontinuada por Oracle, y las aplicaciones lanzadas por ese medio prácticamente desaparecieron del panorama. Este artículo conserva su valor metodológico: los conceptos de descompilación y análisis del bytecode siguen aplicándose a cualquier aplicación Java moderna.

De la técnica al servicio profesional

Si la metodología de este artículo te resultó útil, el siguiente paso natural es llevarla a un contexto profesional: una revisión de seguridad de aplicaciones parte del mismo principio —no confiar en lo que el cliente muestra— y lo convierte en un proceso sistemático que cubre código, configuración, autenticación y lógica de negocio.

En DragonJAR realizamos análisis de seguridad de aplicaciones y pruebas de Pentesting aplicando estas técnicas a sistemas reales: revisamos qué expone tu aplicación del lado cliente, qué secretos quedaron embebidos y qué validaciones solo existen en el navegador o en el ejecutable. El resultado no es un reporte genérico, sino un mapa de exposición con prioridades claras para tu equipo de desarrollo.

Si mantienes aplicaciones Java o cualquier software con lógica sensible en el cliente, conversemos: una revisión a tiempo cuesta una fracción de lo que cuesta un incidente.