Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Los descompiladores de Java y la filosofía del ocultamiento.

Este 31 de Diciembre se cumplen 15 años de la muerte de Hanpeter van Vliet, el autor de Mocha, el primer descompilador de Java. Su aparición generó una gran polémica entonces y todavía es un asunto sin solución, que al mismo tiempo revela una gran diferencia cultural entre desarrolladores de distintos lenguajes.

En 1996, Java era un lenguaje muy novedoso, en el que muchos buscaban ingresar para explorar sus capacidades. Había Applets en páginas Web, aplicaciones autosuficientes que corrían en distintas plataformas, etc. Las posibilidades eran muchas y se veía como una herramienta lucrativa. No fue una sorpresa -aunque parece haberlo sido para Hanpeter van Vliet- que cuando puso su descompilador a disposición del público, muchos desarrolladores lo inundaran de correo (no había redes sociales entonces), reclamandole por ofrecer esta herramienta.

Lo que Mocha hacía era tomar una clase de Java ya compilada y producir un programa fuente formateado, que era muy cercano al original a excepción de los comentarios, los cuales el compilador remueve. A pesar de ser casi tan ininteligible como un ejecutable, la diferencia con una clase de Java, según lo explicaba el propio van Vliet, es que ésta última contiene una cantidad desusada de información simbólica. Esto lo requiere el diseño del lenguaje y sus capacidades, principalmente por ser orientado a objetos y porque cada aplicación tiene protecciones contra el uso malintencionado. El resultado: muchas aplicaciones escritas en Java, podían ser descompiladas y reutilizadas en otras nuevas aplicaciones.

Según van Vliet, compatriotas suyos holandeses, extrajeron ilegalmente un cafeto de una plantación de Mocha en Yemen en 1696, para llevarla a Indonesia, donde sembraron café por primera vez en Java, quitandole el monopolio a los árabes. Por lo tanto, el nombre de Mocha "era apropiado" para lanzar este programa 300 años después. Entonces, buscaba van Vliet una especie de "liberación" del código Java?

Luego del escándalo inicial, van Vliet retiró la aplicación de Internet y realizó una encuesta, en la que encontró que había muchos más desarrolladores que querían el programa, por lo que volvió a subirlo, junto con un antídoto: Crema. Si Mocha descompilaba programas, "Crema" modificaba la información simbólica de la clase compilada, para que fuera ejecutable por la máquina virtual de Java (JVM), pero si se le descompilaba, producía un fuente de Java no recompilable. La razón para esto parece ser que la JVM puede ejecutar la clase aún cuando muchos de los símbolos, como variables y nombres de clase, sean números. Sin embargo, al obtener un fuente, estas variables y nombre de clase ya no son aceptados por el compilador, que espera que por lo menos empiecen con letra. Otras técnicas se usan en Crema, para confundir más -"obfuscate" es el término usado en inglés- la información de la clase.

A quince años de distancia, los motivos de van Vliet parecen ilógicos: compilar no es una buena forma de ocultar secretos, por lo que debemos aceptar la posibilidad de ingeniería inversa y hacerla lo más complicada posible (liga citada). Cuál fue entonces la razón de van Vliet para construir el descompilador en primer lugar, rescatar fuentes borrados accidentalmente? Cuántas veces pasa eso?

Van Vliet murió de cáncer el 31 de Diciembre de 1996, por lo que sus programas quedaron sin alguien que los pudiera mantener, dado que no dejó fuentes rescatables. Eric Smith, un desarrollador, construyó una página donde ha enlistado los distintos proyectos que sobre esta área se han realizado. La última entrada es de 2007. En ella cita una carta que recibió de Borland, donde le solicitan quitar la liga a Mocha, dado que Borland "compró todos los derechos" sobre Mocha y lo ofrecen como parte de su producto JBuilder. A quién se los compraron?

De siete productos citados por Eric, tres son GPL, de los cuales uno de ellos ya no tiene página y los otros dos llevan inactivos varios años. El resto se ofrece sin fuente, sean comerciales o "freeware". Cambios en la estructura de los archivos compilados de Java han vuelto incompatibles varias de estas herramientas, que requieren de mantenimiento para poder estar actualizados.

La filosofía de compartir código se ha extendido por muchos ámbitos del desarrollo de software en los últimos años. Muchas herramientas ya comenzaban a generar comunidades que compartían código cuando esta historia comenzaba a desarrollarse. Será que el Software Libre ha llegado a Java y vuelve sin sentido la tarea de un descompilador? O tenemos una isla de proteccionismo y derechos de autor todavía atrincherada alrededor de esta herramienta de desarrollo?


Atención: Salvo que se indique lo contrario, la licencia del texto de este documento es Creative Commons Reconocimiento 2.5, mediante la cual usted tiene permitido copiar, modificar, comunicar y distribuir el contenido de este texto, de manera total o parcial, y publicarlo o difundirlo en cualquier otro sitio de Internet o medio de comunicaciòn, siempre y cuando incluya o cite (1)el nombre de este sitio de Internet, (2)enlace permanente de este documento, (3)nombre del autor y (4)la misma licencia de distribución.

Opciones: Imprimir | Recomendar | Enlace permanente

Twitter Facebook Google Bookmarks Bitacoras.com Wikio Menéame Technorati Bloglines Digg Yahoo Buzz

Seguimientos (Trackback)

URL de seguimiento para esta entrada:
http://www.alcancelibre.org/trackback.php/20111216122504341
  • Los descompiladores de Java y la filosofía del ocultamiento.
  • 1comentarios
  • Crea cuenta nueva
Agregar comentario

Los siguientes comentarios son de la persona que los haya enviado. Este sitio se deslinda de cualquier responsabilidad respecto de las opiniones expresadas por los participantes en nuestros foros y secciones de comentarios, y el hecho de publicar las mismas no significa que se esté de acuerdo con éstas.

  • Los descompiladores de Java y la filosofía del ocultamiento.
  • Escrito por:Gerardo Juarez el  16/12/2011, 19:19

Parece ser que las noticias son buenas: en este sitio hay una buena selección de software libre en Java.

 

Editado el 16/12/2011, 19:20 por core_dumped