014:software

Microhobby 14. Año II, del 05 al 11 de febrero de 1985

Lo máximo en protección de programas

Gabriel Nieto

Decir Pablo, Santiago y Emilio, para muchos puede suponer simplemente decir tres nombres más. Pero sin embargo, algunos de los usuarios de Spectrum los relacionarán rápidamente con un programa: el DECATHLON.

Hace ya algunos meses, los tres juntos decidieron empezar una aventura que se presentaba excitante: romper una muralla famosa, la que separaba a muchos usuarios del acceso al interior de un codiciado programa. Sobre ella se enarbolaba una bandera con un nombre, Turbo, la diferencia entre poder y no poder.

El Software es, para el usuario, lo mismo que el pan para el hambriento. Constituye el principal alimento de nuestro ordenador. Lo que ocurre, al igual que con el cesto de la compra, es que los precios se disparan, y cada vez se hace más difícil el poder alimentar a nuestro ordenador. Un ordenador que, por otra parte, necesita devorar programas para conseguir la energía necesaria, que nos da la dimensión auténtica de su potencia.

Un programa normal de juegos, tiene un precio medio que oscila en torno a las 2.000 pts., un precio muy alto si lo comparamos, por ejemplo, con el software inglés, y mucho más alto aún si tenemos en cuenta el bolsillo del usuario español, que en una gran mayoría suelen ser jóvenes con escasos recursos económicos.

La realidad, sin embargo, es que el Software en España se ha convertido en un negocio de dimensiones sorprendentes, los intereses son muchos y la necesidad de proteger unos sustanciosos beneficios comerciales se hace cada vez mayor. Por eso, las grandes compañías insisten en reforzar la protección de sus programas con el fin de convertirlos en auténticas fortalezas inexpugnables. La relación entre el usuario y su ordenador se ve quebrantada por este motivo. Ya no nos responde cuando le preguntamos. La palabra LIST que tantas veces utilizamos con la morbosa, pero sana curiosidad, de querer conocer qué se esconde tras aquel curioso programa, para ver de cerca el mecanismo que produce esos efectos en nuestra pantalla de TV, se ha convertido en una pieza inútil. Ni siquiera nuestra fiel BREAK nos responde, los fabricantes le han hecho enmudecer, pero no por mucho tiempo. En realidad, se encuentra aletargada como si hubiera sido drogada para que no atendiera a nuestra llamada. Pero existe un antídoto que, más tarde o más temprano, acabaremos encontrando. Y será entonces cuando comience la auténtica aventura, nuestra entrada por la puerta falsa podría convertirnos en peligrosos espias industriales; pero la realidad es otra, es el propio fabricante el que fomenta el deseo del usuario por descubrir la clave que esconde la llave que nos permita entrar en la fortaleza protegida.

Pablo, Santiago y Emilio, decidieron aceptar el reto de ser los primeros en desproteger un conocido programa: «Decathlon», pero cometieron un error, quizá guiados por la alegría lógica de haber conseguido romper la «muralla Turbo», decidieron bautizar su éxito y poner su nombre en el programa. Lo que ellos no sabían es que, pasado algún tiempo, iban a aparecer gran cantidad de cintas en las que se podía leer su nombre, y lo que era más grave, éstas se estaban vendiendo en comercios dedicados a la venta de Software.

De esta forma, lo que empezó siendo un sano deseo de superar un reto, se había acabado convirtiendo en una actividad ilegal por culpa de aquellos que, sin escrúpulos, aprovecharon su amistad con ellos para conseguir copias que más tarde iban a llegar a los piratas comerciales.

La piratería sigue siendo un grave pro [blema, los sistemas de(falta texto en el original)] protección se están convirtiendo, poco a poco, en un distintivo de la calidad del programa. Estamos llegando a un punto en que antes de saber de qué va el programa, nos interesamos por el sistema de protección que lleva.

El sistema Turbo: un sistema roto

El sistema Turbo es el que se ha hecho más famoso de todos, hasta el punto de que, hoy día, se hace una distinción entre los programas que incorporan este sistema y los que no. Para entenderlo mejor, se ha convertido un poco en el coco del mercado de software. El sistema, en realidad, se basa en una doble protección: a nivel Basic y de código máquina.

Dentro del sistema de protección, junto a los conocidos métodos de invisibilidad de tinta y papel, la creación de líneas 0 y la incorporación del sistema de carga rápida, hay otros tan sofisticados, como hacer el programa inmanejable desde el BASIC, o crear una línea por encima de la 9999, la máxima que admite este sistema. La rutina de carga rápida tiene además, diversas protecciones en su ejecución, en distintos puntos de la misma. Otro detalle importante es que no existe Basic en la parte de código máquina, por lo que resulta inútil buscar ningún listado.

Sin embargo y, a pesar de todo esto, nuestros amigos de Zaragoza fueron dando con las claves, una por una, hasta lograr desenmascarar el misterio, y no sólo eso, además, según ellos, han logrado mejorar el sistema de protección Turbo.

Cuando se pusieron en contacto con nosotros, mantuvimos una larga conversación con uno de los componentes del grupo, el cual insistió en ocultar su identidad. Durante el transcurso de nuestra entrevista hizo hincapié, en repetidas ocasiones, en el hecho de que habían afrontado el reto de forma sana, sin ningún afan de lucro, y mucho menos de pirateo. Lo que si es cierto es que no hay ninguna ley que prohiba a un usuario coger el programa que ha comprado y hacer con él lo que le venga en gana, siempre y cuando no lo utilice con fines comerciales.

Hay que terminar insistiendo en la necesidad imperiosa de abaratar el software, como única medida que acabe, de una vez por todas, en el pirateo. Cuando deje de resultar rentable dejará de existir.

A continuación publicamos una carta de Pablo, Santiago y Emilio en la que se dan las pistas necesarias para que los más entendidos descifren el misterio, y los menos entendidos comiencen a interesarse por el tema.

Intentamos describir telegráficamente, sin orden lógico, algunos de los puntos en que se apoya el sistema. Anticipamos que tiene un doble sistema de protección:

  • A nivel de basic.
  • A nivel de código máquina.

Los puntos en que se basa son los siguientes:

  1. El BASIC cargador contiene enmascarada la rutina de carga rápida, junto con los datos de carga del programa.
  2. La rutina de carga representa la última línea (aparente) del programa BASIC. Su número de línea es superior a 9999, por lo que no se ejecuta.
  3. La rutina de carga está enmascarada con la función OR exclusive, de modo que cada octeto original se obtiene de hacer el OR exclusive entre dos octetos adyacentes del código enmascarado.
  4. La rutina específica para desenmascarar la rutina de carga y trasladarla a su zona de ejecución, ocupa la zona de variables del BASIC. Su comienzo está en la dirección a la que apunta la variable VARS.
  5. La rutina de desenmascaramiento está, a su vez, enmascarada mediante una utilización especial del registro indexado IY. Este registro se utiliza normalmente como registro doble de 16 bits. Los códigos son los mismos que los de los registros H y L, salvo con un FD delante de cada código.
  6. Todas las líneas BASIC tienen número de línea 0 y PAPER 0, INK 0, ocultos o implícitos en cada línea. Ello los hace invisibles en el listado.
  7. Las líneas BASIC no aportan nada esencial, salvo la 4.a, que contiene oculta, en los códigos hexadecimales que siguen al indicativo 0E, la verdadera asignación en la pila de máquina directamente, de la dirección de retorno en caso de error, y que es la contenida en la variable VARS.
  8. La puesta en marcha de todo el proceso, tiene lugar al finalizar la ejecución del BASIC, momento en el que en lugar de imprimir en pantalla el mensaje O.K., salta automáticamente al comienzo de la rutina de desenmascaramiento.
  9. La rutina de carga rápida tiene protecciones diversas en su ejecución. En distintos puntos de la misma, comprueba los resultados de la carga y salta a la dirección 0 de la memoria ROM si no son los esperados. Antes de saltar al comienzo del juego, se borra ella misma.

El programa Decathlon, además, tiene una protección adicional en su código máquina:

  • No tiene BASIC. Es inútil buscar ningún listado.
  • Sólo tiene definidas las variables del sistema que necesita el juego, como la de BORDER; por ejemplo.
  • Al no estar definida la zona BASIC (puede estar definida pero vacía), el programa es inmanejable desde el BASIC; sólo puede examinarse con un monitor de código máquina o similar (Acondicionar el BASIC supondría destruir parte del juego).
  • 014/software.txt
  • Última modificación: d/m/Y H:i
  • por miguel