Colabora
Daniel Rodríguez Herrera

2. Ingeniería inversa

La ingeniería inversa consiste en desmontar un objeto para ver cómo funciona y, de ese modo, duplicar o mejorar el mismo. Por ejemplo, si Ford compra un SEAT Panda y lo descompone para ver cómo han hecho un coche tan cutre y barato, estaría realizando ingeniería inversa. En el ámbito informático, existen dos maneras de llevarla a cabo:

1. Empleando métodos de “caja negra”, que consiste en observar desde fuera el comportamiento de un programa al que se somete a una serie de casos de uso. Esto es factible en programas pequeños. Por poner un ejemplo, existe un programa llamado Trillian que accede a las redes de mensajería instantánea de MSN, ICQ o Yahoo!, habilidad obtenida por este método. Microsoft hizo algo parecido para que su MSN interoperara con el software de AOL.

2. El otro consistiría en descompilar un programa de modo que se obtenga el código fuente, legible por un programador, del mismo a partir del código que ejecutamos en nuestro ordenador, compuesto por unos y ceros. Es la única manera con programas grandes, como sistemas operativos.

En el ámbito del software, esta práctica está prohibida, tanto por las licencias con las que se vende como por leyes (aunque en este último caso la primera opción se permite). En general, la ingeniería inversa en un trabajo muy costoso y largo, que no suele ofrecer beneficios que justifiquen su uso. La legislación vigente en Europa, Estados Unidos y Japón parecen permitirla en el caso de que facilite la interoperabilidad entre los productos, pero en ningún otro caso.

Algunos de los usos de la descompilación no tienen relación ni con la copia del programa original ni con la interoperabilidad, único uso permitido. Se emplea para aprender a partir del código ajeno, aunque el auge del software libre ha reducido este uso, para mejorar una herramienta existente o adaptarla a un uso particular o, incluso, para comprobar si un competidor ha copiado tu código. Un caso curioso que se puede considerar prohibido por la ley es la descompilación de virus que realizan rutinariamente las compañías de antivirus para poder neutralizarlos. Claro que ningún creador de virus se va a dedicar a demandarles.

No obstante, si el código de un programa es la única fuente de la que obtener datos sobre su funcionamiento, ¿es legítimo evitar su examen para lanzar al mercado un competidor, aún cuando éste no copie el código original? Este es el caso en la legislación actual, lo que permite que buena parte de Windows siga siendo un gran secreto.

Daniel Rodríguez Herrera es editor de Programación en castellano.

Lea también 1. No es suficiente con tener éxito

Ver los comentarios Ocultar los comentarios

Portada

Suscríbete a nuestro boletín diario