012:software

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
012:software [d/m/Y H:i] – [Macedonia de trucos] miguel012:software [d/m/Y H:i] (actual) – [Inofensivo y divertido] miguel
Línea 45: Línea 45:
  
 El segundo truco antiMERGE se basa en unos principios totalmente diferentes. Dado que esta instrucción está pensada originalmente para fusionar programas, es imprescindible que vaya tomando nota de los números de línea. El truco consiste en darle un número «imposible» con lo que la rutina se vuelve loca y se produce el consiguiente bloqueo. Naturalmente, hay que tener la precaución de restablecer las cosas a su estado normal antes de ejecutar el programa. Veamos un ejemplo: El segundo truco antiMERGE se basa en unos principios totalmente diferentes. Dado que esta instrucción está pensada originalmente para fusionar programas, es imprescindible que vaya tomando nota de los números de línea. El truco consiste en darle un número «imposible» con lo que la rutina se vuelve loca y se produce el consiguiente bloqueo. Naturalmente, hay que tener la precaución de restablecer las cosas a su estado normal antes de ejecutar el programa. Veamos un ejemplo:
-1 POKE 23802,0 : POKE 23613,0 + 
-2 GOTO 4 +<code basic> 
-3 POKE 23801,255 : SAVE "programa" LINE 1 : STOP +1 POKE 23802, 0: POKE 23613, 0 
-4 REM principio del programa +2 GOTO 4 
-A la hora de proteger un programa contra MERGE incluiremos estas líneas al principio del mismo y lo grabaremos haciendo GOTO 3. El POKE de esta línea tiene por objeto transformar el número de la línea 2, cambiándolo a 65282, lo que para el Spectrum es imposible, y provocará el bloqueo si intentamos hacer MERGE. Por el contraio, si utiliza- +3 POKE 23801, 255: SAVE "programa" LINE 1: STOP 
-8 MICROHOBBY +4 REM principio del programa 
-mos el LOAD normal, la ejecución comenzará en la línea 1 donde el primer POKE devolverá a la línea 2 su número normal, y el segundo es uno de los de protección que ya hemos visto. Luego la ejecución se transferirá a la línea 4 donde comienza el resto del programa. Al utilizar esta rutinita hay que tener cuidado en no modificar la línea 1 ya que alteraríamos la dirección de la segunda línea con lo que el POKE debería de tener otra dirección. Por el contrario, si utilizamos microdive hay que tener en cuenta que la zona de programa no empieza en el sitio habitual y habrá que modificar las direcciones en consecuencia. La misma advertencia es de tener en cuenta para los siguiente trucos. +</code> 
-Inofensivo y divertido + 
-Y siguiendo con nuestro panorama de trucos, vamos ahora con uno bastante inofensivo pero que siempre resulta divertido. El archifamoso de la línea 0. Muchos programadores que conocen este truco, lo emplean para crear una línea que no se puede editar y donde colocan su nombre para evitar que otra persona se apropie del programa. No nos parece mal, pero rogamos que no lo pongan en los programas que nos envían ya que luego llueven cartas de lectores justamente indignados quejándose de que no pueden introducir esta línea en su ordenador. Para ello, basta con introducir la línea con un número normal y, posteriormente, modificarlo cambiando los dos primeros bytes de la misma mediante POKEs. Toda la dificultad consiste en conocer la direccTón donde tenemos que POKEAr, si se me permite el barbaris-mo. Supongamos, por ejemplo, que en la primera línea de nuestro programa hemos puesto nuestro nombre. Basta en este caso, con hacer POKE 23756,0 para transformarla en línea 0 que no se puede modificar mientras no hagamos otro POKE para deshacer el efecto. Si el número de esta línea fuese mayor que 255, entonces necesitamos añadir POKE 23755,0 ya que estos números se codifican en dos bytes. Este truco se suele emplear en combinación con los caracteres de control de color para dejar el fondo del mismo color que la tinta con lo que el listado se vuelve invisible hasta que no editemos la línea 0 y eliminemos los caracteres de control. Recordemos que en el número 2 de MICROHOBBY se explica cómo variar los colores de las líneas del programa. +A la hora de proteger un programa contra MERGE incluiremos estas líneas al principio del mismo y lo grabaremos haciendo GOTO 3. El POKE de esta línea tiene por objeto transformar el número de la línea 2, cambiándolo a 65282, lo que para el Spectrum es imposible, y provocará el bloqueo si intentamos hacer MERGE. Por el contrario, si utilizamos el LOAD normal, la ejecución comenzará en la línea 1 donde el primer POKE devolverá a la línea 2 su número normal, y el segundo es uno de los de protección que ya hemos visto. Luego la ejecución se transferirá a la línea 4 donde comienza el resto del programa. Al utilizar esta rutinita hay que tener cuidado en no modificar la línea 1 ya que alteraríamos la dirección de la segunda línea con lo que el POKE debería de tener otra dirección. Por el contrario, si utilizamos microdrive hay que tener en cuenta que la zona de programa no empieza en el sitio habitual y habrá que modificar las direcciones en consecuencia. La misma advertencia es de tener en cuenta para los siguiente trucos. 
-Un truco canallesco_ + 
-Y vamos a terminar con un truco verdaderamente canallesco. Aquellos lectores que hayan tenido la paciencia de leer a fondo el manual del Spectrum (y hago aquí una pausa para afirmar que es uno de los mejores del mercado, otro día hablaremos de la traducción...) recordarán que los números se almacenan en memoria de dos formas. Primero viene la representación en ASCII del número, a continuación el código 14 que indica número y, por último, cinco bytes que lo representan en coma flotante. Lo interesante de este complicado asunto es que, para obtener el listado del programa, nuestro Spectrum emplea la representación el ASCII, mientras que para los cálculos emplea los cinco bytes mencionados. Esto significa que es posible cambiar los bytes que representan el número en ASCII dándoles unos valores irreales mientras que el programa va a seguir operando con los números reales, lo que nos permite confundir a todo aquel que intente reproducir nuestro programa. Y más interesante todavía, cuando editamos una línea «protegida» y la volvemos a introducir en memoria la representación en coma flotante cambia para ajustarse a la representación en ASCII lo que significa que el listado queda totalmente corrompido e inutilizable. Vamos con el ejemplo de turno:+==== Inofensivo y divertido ==== 
 + 
 +Y siguiendo con nuestro panorama de trucos, vamos ahora con uno bastante inofensivo pero que siempre resulta divertido. El archifamoso de la línea 0. Muchos programadores que conocen este truco, lo emplean para crear una línea que no se puede editar y donde colocan su nombre para evitar que otra persona se apropie del programa. No nos parece mal, pero rogamos que no lo pongan en los programas que nos envían ya que luego llueven cartas de lectores justamente indignados quejándose de que no pueden introducir esta línea en su ordenador. Para ello, basta con introducir la línea con un número normal y, posteriormente, modificarlo cambiando los dos primeros bytes de la misma mediante POKEs. Toda la dificultad consiste en conocer la dirección donde tenemos que POKEAr, si se me permite el barbarismo. Supongamos, por ejemplo, que en la primera línea de nuestro programa hemos puesto nuestro nombre. Basta en este caso, con hacer POKE 23756,0 para transformarla en línea 0 que no se puede modificar mientras no hagamos otro POKE para deshacer el efecto. Si el número de esta línea fuese mayor que 255, entonces necesitamos añadir POKE 23755,0 ya que estos números se codifican en dos bytes. Este truco se suele emplear en combinación con los caracteres de control de color para dejar el fondo del mismo color que la tinta con lo que el listado se vuelve invisible hasta que no editemos la línea 0 y eliminemos los caracteres de control. Recordemos que en el número 2 de MICROHOBBY se explica cómo variar los colores de las líneas del programa. 
 + 
 +==== Un truco canallesco ==== 
 + 
 +Y vamos a terminar con un truco verdaderamente canallesco. Aquellos lectores que hayan tenido la paciencia de leer a fondo el manual del Spectrum (y hago aquí una pausa para afirmar que es uno de los mejores del mercado, otro día hablaremos de la traducción...) recordarán que los números se almacenan en memoria de dos formas. Primero viene la representación en ASCII del número, a continuación el código 14 que indica número y, por último, cinco bytes que lo representan en coma flotante. Lo interesante de este complicado asunto es que, para obtener el listado del programa, nuestro Spectrum emplea la representación el ASCII, mientras que para los cálculos emplea los cinco bytes mencionados. Esto significa que es posible cambiar los bytes que representan el número en ASCII dándoles unos valores irreales mientras que el programa va a seguir operando con los números reales, lo que nos permite confundir a todo aquel que intente reproducir nuestro programa. Y más interesante todavía, cuando editamos una línea «protegida» y la volvemos a introducir en memoria la representación en coma flotante cambia para ajustarse a la representación en ASCII lo que significa que el listado queda totalmente corrompido e inutilizable. Vamos con el ejemplo de turno: 
 Introduzcamos el siguiente y elemental programa: Introduzcamos el siguiente y elemental programa:
 +
 +<code basic>
 1 PRINT 2 + 2 1 PRINT 2 + 2
-Y a continuación vamos a cambiar los números mediante POKE 23760,49 y POKE 23768,49. Si ahora hacemos LIST obtendremos el siguiente programa: +</code> 
-1 PRINT 1 + 1ya que 49 es el código ASCII del número 1. + 
-Pero si hacemos RUN observaremos con gran sorpresa que el resultado sigue siendo 4, y no 2 como sería de esperar. Y por último, editemos la línea mediante CAPS SHIFT y EDIT y sin modificarla volvamos a introducirla con EN-TER. Si ahora pulsamos nuevamente RUN, veremos que el resultado es 2, lo que significa que ha perdido definitivamente la representación en coma flotante de los números originales al intentar editar la línea. Combinando este truco con el de los caracteres de control de color para volver invisible nuestro programa, habremos conseguido producir un buen dolor de cabeza a todo aquel que intente meterse dentro del mismo.+Y a continuación vamos a cambiar los números mediante POKE 23760,49 y POKE 23768,49. Si ahora hacemos LIST obtendremos el siguiente programa: 
 + 
 +<code basic> 
 +1 PRINT 1 + 1 
 +</code> 
 + 
 +ya que 49 es el código ASCII del número 1. 
 + 
 +Pero si hacemos RUN observaremos con gran sorpresa que el resultado sigue siendo 4, y no 2 como sería de esperar. Y por último, editemos la línea mediante CAPS SHIFT y EDIT y sin modificarla volvamos a introducirla con ENTER. Si ahora pulsamos nuevamente RUN, veremos que el resultado es 2, lo que significa que ha perdido definitivamente la representación en coma flotante de los números originales al intentar editar la línea. Combinando este truco con el de los caracteres de control de color para volver invisible nuestro programa, habremos conseguido producir un buen dolor de cabeza a todo aquel que intente meterse dentro del mismo. 
 ¡Qué ustedes se lo pasen bien! ¡Qué ustedes se lo pasen bien!
  • 012/software.1291466275.txt.gz
  • Última modificación: d/m/Y H:i
  • por miguel