SlideShare una empresa de Scribd logo
/$


                              %,%/,$


                                      '(/


                         +$.(5



Por Jose Manuel Lazo
Originalmente publicado en la revista Microhobby.
TOP SECRET


Como entrar en un programa y averiguar sus secretos


/$%,%/,$'(/©+$.(5ª,
$%,   $'(/©+$.  ª,
Jose Manuel Lazo

         Un HACKER, según el diccionario de la lengua inglesa, es una persona
         capaz de enfrentarse (con éxito) a todas las dificultades que le impone un
         determinado sistema. ¿Cuántas veces has necesitado examinar el interior
         de un programa, y no has podido por que te has estrellado contra
         infranqueables protecciones?. En esta seccion vamos a abordar en
         profundidad este delicado tema.

                                                                       copia la utilizamos SOLO
Debido al masivo avance de la      Y, ¿qué pasa con los
                                                                       como back-up de seguridad.
piratería del software, las casa   poseedores de sistemas de
productoras han añadido a sus      almacenamiento más eficaces         No       creas  que      estás
creaciones una serie de            y fiables que la cinta de           infringiendo   alguna      ley
protecciones para evitar que       cassete?                            desprotegiendo un programa:
terceros se adueñen copien o       Los compradores de unidades
                                                                       es una labor perfectamente
llenen sus bolsillo con este       de disco, microdrives, etc.,
                                                                       LEGAL siempre y cuando no
producto que , la mayoría de       maldicen una y otra vez el día
                                                                       negociemos      con       ello
las veces, ha requerido el         en que se les ocurrió adquirir
                                                                       enriqueciendonos a costa del
esfuerzo de muchas personas        uno de estos artilugios, ya que
                                                                       esfuerzo de los demás. Lo
durante bastante tiempo.           no existen programas en estos
                                                                       hemos dicho muchas veces, y
                                                                       no está de más recordarlo
Esto, por una parte, está bien,    formatos. La única posibilidad
                                                                       aquí_ estamos en contra de la
ya que frena en lo posible la      que les queda es adaptar el
                                                                       PIRATERIA porque a la larga
piratería, pero bloquea al         software de la cinta original.
                                                                       puede hundir la industria del
usuario que legalmente ha          Por último, hay numerosos           software y eso no es bueno
adquirido un juego o una           usuarios de software que            para nadie
utilidad y, por cualquier          encuentran mayor placer en
circunstancia, desea modificar     profanar un programa y ver        La proteccion del
el programa en alguna de sus       sus intimidades que en matar a      software
partes.                            tal o cual marciano.                Ninguna cosa en el mundo de
Porque, ¿cuántas veces te                                              los ordenadores es más
hubiera gustado ponerle vidas      No a la pirateria
                                                                       polifacética que la protección
infinitas a ese juego que tienes   Con esta serie van a acabarse       del software. Existen mil y un
arrinconado porque no logras       estos problemas, pero los           trucos con los cuales se puede
pasar de la tercera pantalla o     piratas a los que ya se les están   proteger un programa y
modificar las opciones de          poniendo los dientes largos         hacerlo inviolable a unos ojos
impresora en esta utilidad que     que no sigan leyendo, pues          no expertos en el tema; existen
tanto necesitas?. Y no has         aquí NUNCA se va a explicar         protecciones en el Basic, en el
podido, porque el programita       la manera en que se puede           CM, aprovechando errores del
en cuestión parece un cofre de     copiar un programa, cosa que,       microprocesador, etc.
titanio cerrado a cal y canto      por otra parte, es legal si la
con mil cerrojos.                                                      Cada programa se puede decir
                                                                       que es un mundo aparte,


2 - La Biblia del Hacker
TOP SECRET

distinto de los demás. El          • Protecciones a nivel Código        • Pokes en las variables del
sistema de protección que ha       Máquina.                             sistema.
utilizado una casa, además de
                                   • Protecciones       a      nivel    • Anti-merge           en      los
proteger el programa, tiene
                                   Hardware.                            programas.
que protegerse a sí mismo para
evitar que otra casa lo utilice.   • Rutinas de carga distintas de      • C.M. En la zona de edición.
Por otra parte, no existe un       las normales.
                                                                        • C.M. En         la    zona    de
sistema de análisis que pueda                                           variables.
                                   Las protecciones a nivel
aplicarse    a    todos     los
                                   basic                                • Protección turbo.
programas como se se tratase
de la piedra filosofal. No         El Basic es un lenguaje
                                                                        Protecciones a nivel C.M.
existe lo que podríamos llamar     bastante más sencillo que el
los diez mandamientos del         árido Assembler, sin embargo         En      lenguaje      Assembler
Hacker, al contrario, en esta     las protecciones a nivel Basic       también se pueden hacer
metáfora existiría toda una        pueden producir más dolores          protecciones bastante potentes,
Biblia completa que podría         de cabeza de lo que en un            sin embargo, a idénticos
llenarse    de      información    principio puede suponerse.           conocimientos      de    ambos
referente al tema. De ahí el       Para enfrentarse con este tipo       lenguajes resulta más sencillo
nombre de la serie.                de protecciones es necesario         entrar al C.M.; piénsese que al
                                   tener conocimientos de cómo          ser un lenguaje más rígido se
Sólo la experiencia, un
                                   funciona el SO (Sistema              pueden      realizar     menos
profundo conocimiento del
                                   Operativo) ante una situación        trampas. Te puedes encontrar
lenguaje Assembler y, sobre
                                   determinada.                         con:
todo, del sistema operativo del
Spectrum, pueden ser las           El 99 por 100 de los                 • Corrompimiento de la pila.
cualidades     del   verdadero     programas llevan protecciones
                                                                        • Popeo de la dirección de
Hacker.                          de este tipo; piénsese que es lo
                                                                        retorno.
                                   primero que se encuentra el
En esta serie utilizaremos en
                                   Hacker al intentar entrasr en        • Uso        de        nemónicos
todo momento términos y
                                   un programa y es el primer           inexistentes.
sistemas SENCILLOS, dentro
                                   ladrillo que debemos apartar.
de lo que cabe. Si se tuviese                                           • Enmascaramiento de código
                                   El nivel de protección es, bajo
cualquier duda puede ser una                                            con registro R.
                                   cierto punto de vista , más alto
inestimable       ayuda       y
                                   que lo que se puede encontrar        • Checksum´s variados
complemento el curso de C.M.
                                   en C.M. ya que aquí se pueden
Que está en las páginas                                                 • Enmascaramiento              con
                                   hacer más trampas en el ya
centrales de esta revista desde                                         pantalla.
                                   intrincado juego.
el número 42.
                                   Dentro de las protecciones a         • Longitud excesiva de bytes.
La estructura de los               nivel      Basic,   podemos          • Solapamiento del cargador.
sistemas de proteccion             encontrar:
                                                                        • Opacidad en la asignación
Vamos a empezar por una            • Lineas 0 (cero).                   de los vectores de carga.
clasificación genérica de las
distintas protecciones con las     • Controles de color.                • Basura en listados.
que      un   usuario    puede     • Basura en los listados.            • Saltos a 0 por error de carga.
encontrarse. En primer lugar
existen:                           • C.M. En lineas REM.                • Deshabilitación del Space
• Protecciones a nivel Basic       • Literales ASCII retocadas.         • Proteccion turbo.


                                                                       La Biblia del Hacker 3
TOP SECRET

Rutinas de cargas                  • Tono guía       de      distinta   que una tarjeta esté conectada
distintas.                         frecuencia.                          en el bus de expansión para
La mayoría de los programas                                             funcionar. Ests no no darán
                                   • Tono guía ultracorto.              excesivos problemas ya que la
llevan ahora un sistema de
carga distinto al estándar de la   • Programas sin cabecera.            única finalidad de este
                                                                        dispositivo es cerciorarse de
ROM. Esto se hizo en un            • Tono guía en medio de los
                                                                        que se posee el programa
principio    para     que    los   bytes.
                                                                        original.
copiones no pudieran copiar
el programa en cuestión. Se        • Bloques pegados                  En otras ocasiones , parte del
pueden encontrar rutinas de        • Rutinas de carga aleatoria       software se halla soportado
carga de todo tipo, algunas        en vez de secuencial.                por una memoria EPROM; en
tienen sólo el objeto de hacer                                          este caso un nombre más
más vistosa la carga, pero         Protecciones de                      acertado es el de FIRMWARE
complican las cosas a la hora      Hardware                             por     ser     un   software
de estudiarlas.                    Por último, nos podemos              FIRMEMENTE unido a la
                                   encontrar    con   distintas         memoria. Este es de difícil
• Protección turbo.
                                                                        modificación y se precisan ,
                                   protecciones     hardware.
• Distinta    velocidad      en    Algunos programas necesitan          además , conocimientos de
baudios.                                                                hardware. Pero todo se andará.




4 - La Biblia del Hacker
TOP SECRET


Como entrar en un programa y averiguar sus secretos.


/$%,%/,$'(/©+$.(5ª,,
$%,   $'(/©+$.  ª,,
Jose Manuel Lazo

         Prosiguiendo con la serie, esta semana vamos a empezar por lo que
         primero se puede encontrar en un programa: PROTECCIONES A NIVEL
         BASIC.

                                  la hora de cargarse, no se                la tinta, o el papel en medio de
El cargador de cualquier
                                  ejecutará.                                una linea y que esta no pueda
programa suele estar protegido
                                                                            verse. Es interesante primero
en un 99 por 100 de los casos     Una vez que tengamos el
                                                                            ver la forma de introducirlos
para evitar que se pueda          cargado sin auto-run lo
efectuar un Break una vez       podremos                cargar            para luego poder saber como
que éste se haya ejecutado. Lo    tranquilamente y después nos              quitarlos fácilmente.
primero que hay que hacer es      saldrá el informe OK.                   Prueba a editar una linea de un
quitar el auto-run. Es un                                                   programa Basic cualquiera y
secreto a voces que haciendo      Lineas 0 (cero)                           desplaza el cursor al medio de
Merge  el programa se carga     Al eliminar el listado nos                la misma. Pulsa el modo
pero no se ejecuta. Debemos       podemos encontrar con que                 extendido y a contnuacion el
probar esta forma en primer       algunas o todas las lineas                4, por ejemplo. Verás que todo
lugar, si bien, también existen   tienen como número el 0                   el papel de la linea a
protecciones       para    esto   (cero). Esto evita que se                 continuación se pone de color
corrompiendo alguna linea del     puedan editar y modificar.                verder. Pulsa otra vez el modo
Basic, con lo que se consigue     Hay una manera de cambiar el              extendido, pero esta vez el 1
que una vez cargado el            número de lineas, aunque esto             con Simbol Shift. Ahora es la
programa el SO (Sistema           no es necesario como más                  tinta la que ha cambiado. Pulsa
Operativo)       se     cuelque   adelante se verá. De momento              Enter y podrñas comprobar
intentando mergear una          y para poner un número a la               que el listado Basic a partir de
linea falsa del Basic.            primera linea del Basic,                  esta linea tiene otro color
                                  puedes probar lo siguiente:               distinto y que las ordenes INK
Si no se consiguen resultados
                                     ¨¢©¢¨¢ £¢¤¢¤¢ ¦ ¤¢£¢¡¢
                                     ¢¢¢§§ ¢¢¦¥¥ ¢¢  
                                       ¨ © ¨  £ ¤ ¤         ¤ £ ¡        y PAPER no funcionan en esta
positivos, intentaremos hacer
                                  '#%¢# !¢ ¢¢¢ ¢¢
                                  '¢¢#$¢ ¢¢ ¢¢
                                    # % !                             zona. Esto mismo, pero con
una copia del cargador sin                              )200 )) ((
                                                         ) 1                PAPER e INK del mismo
auto-run, usando para ello el
                                                                            color, puede valer para que
programa            Copyupi     Con esto podremos editarla.               una linea del listado sea
publicado en nuestros números     La razón de editar una línea              invisible.
44 y 45. Con su ayuda se          del listado es poder quitarle
puede cargar un programa          los controles de color que                Vamos a ver ahora cómo
Basic y modificar cualquiera      puedan existir dificultando su            quitarlos: primero edita la
de los parámetros de la           visión.                                   linea que has modificado y
cabecera. En este caso                                                      desplaza el cursor hasta que
cambiaremos la linea de auto-     Los controles de color en un              este no se vea, o sus atributos
run del programa por el valor     listado son los códigos ASCII             cambien a los nuevos. Pulsa
32768, con lo cual el Basic, a    entre el 16 y el 21, ambos                delete dos veces por cada
                                  inclusive. Sirven para cambiar            control ya que el mismo tiene


                                                                           La Biblia del Hacker 5
TOP SECRET

dos códigos dentro del listado    color el listado saldrá visible.   va a continuar el listado. En
m uno es el control               La otra se verá más adelante.      una linea del Basic se han de
propiamente dicho, y otro es el                                      dejar tres espacios en blanco,
                                  Un consejo: editar una linea de
valor al que cambia este.                                            en el primero irá el control de
                                  un programa puede llevar
Suponte que tienes un listado                                        AT, y en los siguientes las
                                  perfectamente a hacer que el
en la pantalla y que solo ves     listado se corrompa en caso de     coordenadas.
un 0 (cero): haz el POKE para     que se haya utilizado la           Pokeando en los dos espacios
cambiar el valor por 1 y edita    protección de las literales        disponibles       para      las
la linea. Ahora desplaza el       ASCII retocadas.                   coordenadas se puede lograr
cursor hacia la derecha pero                                         que al hacer LIST salga
con cuidado, parando en el        Controles de cursor                automáticamente el informe
momento en que este no se         De la misma forma, también         entero fuera de rango, dando
vea. Deletea hasta que éste     pueden ponerse controles de        como      coordenadas     unas
sea perfectamente visible:        cursor, haciendo que el listado    imposibles, por ejemplo, AT
seguro que la linea también lo    comience en la parte superior      40,0.
es en este momento. Si no lo      de la pantalla y que al            De igual manera, con los
fuera tendrías que volver a       continuar lo haga otra vez         controles cursor izquierdas, y
repetir la operación hasta        sobre la primera linea.            derecha, 8 y 9, se puede lograr
conseguirlo, pues puede haber     También puede salir el             enmascarar parte del listado,
más de uno.                       informe entero fuera de           sobreescribiendo encima del
Hay otras dos formas de poder     rango. Vamos a ver esto más       mismo.
contemplar un listado , aunque    detenidamente:
                                                                     Estos controles de cursor no se
posea controles de color, sin     Entre los códigos ASCII el 22      pueden poner ni quitar en
necesidad de tener que editar     es el control de AT; cuando el     modo edición, por lo que hay
las lineas.                       SO se encuentra este control       que hacerlo a base de POKES.
Una es haciendo un LLIST          interpreta los dos siguientes
con una impresora; como esta      como coordenadas del cursor,
no reconoce los controles de      en baja resolución, donde se




6 - La Biblia del Hacker
TOP SECRET


Como entrar en un programa y averiguar sus secretos


/$%,%/,$'(/©+$.(5ª,,,
$%,   $'(/©+$.  ª,,,
Jose Manuel Lazo

                             En el listado de un programa Basic pueden hacerse determinadas
                             alteraciones de tal forma que sea imposible averiguar su contenido e
                             incluso que, al intentarlo, el propio listado se modifique creando una gran
                             confusión.

.
Un caso típico es que cuando                                                                 Teclea GOTO 1000 y prueba           Por último, vamos a ver la
hacemos LIST, no sale nada, y                                                                algunos controles: Primero          forma de sobreescribir en el
además se nos presenta el                                                                    uno, por lo que responde a la       listado; responde a la primera
cursor con una interrogación.                                                                primera pregunta con un 1, y a      pregunta con 3 y alas tres
Esto es porque se ha utilizado                                                               la segunda con un 6. Si haces       siguientes con 22,0 y 0.
un      control    AT      con                                                               LIST verás que el texto de la       Veremos como el número de
coordenadas falsas. Todo esto                                                                primera linea se ha desplazado      la     primera     linea    ha
es en realidad basura dentro                                                                 a la columna central de TAB,        desaparecido imprimiendose el
del listado para evitar que se                                                               tal y como si hubieramos            texto de la primera linea REM
vea. Pero la mejor manera de                                                                 utilizado PRINT con coma.           en las coordenadas 0,0.
aprender     todo    esto   es                                                               Este control es el 6.
                                                                                                                                 Otra consecuencia de tener
practicando, por lo que vamos
                                                                                             Responde ahora a las primera        basura en el listado es que si
a exponer unos ejemplos
                                                                                             pregunta con 1, y a la segunda      conseguimos editar la linea, no
sencillos:
                                                                                             con 22; este es el control de       la podemos modificar debido a
Primero teclea lo siguiente                                                                  AT. Puesto que los dos              que     constantemente     está
teniendo la memoria del                                                                      siguientes valores son dos 32,      sonando el zumbador de
ordenador limpia:                                                                            que corresponden al espacio,        alarma por el error que,
                   FGDEC$ A¢@¢89 6¢5¢4
                   HE$BB ¢977 ¢33
                     F D C                    A @ 8                       6 5 4              cuando pulsemos ENTER             intencionadamente,se         ha
               Y¢ ¢XX2WEUVT¢S¢R R¢Q1P
               Y ¢QQ ¢aE`¢¢¢QQ ¢1¢II
                                RR W U T S R                                   R Q P         para     hacar    un     listado    introducido en ella.
                                                                 iGh1gVf¢decG
                                                                 i H1`¢e`bb
                                                                      h g f dc               automático no nos saldrá y
                                      ¢1V9tt ¢qq pp
                                      wh1v¢uVh9 s¢r¢
                                       w h v u h                         s r                                                     Esto último también puede ser
                                                                                             tendremos el cursor junto con
         iGw ¢a‚EgVd¢w¢ wh1uVf¢d¢xy
         i   H¢h2EV¢¢€€ ¢1`¢¢1gg
                 w h ‚ g d  w                                     w h u f d x                                                   debido a que en el listado
                                                                                             una      interrogación.      Sin
     •$”“1’V‘E‡a ‰y¢¢††2 ¢¢„„2
 $¢1`Ea –¢¢a…… ¢¢aƒƒ
      • ” “ ’ ‘ ‡                                 ‰ ˆˆ ‡‡                    „„ „„                                               existe un CLEAR que situe el
                                                                            d˜™
                                                                             E——
                                                                            d ˜              embargo, al dar la orden LIST
                                                                                                                                 RAMTOP excesivamente bajo
q¢pp2kEo¢oVn1lmkG iyh aGff2
¢aEV1$Gjj y¢gg aGaee
 q            k o o n l k                                      i h           ff ee           saldrá inmediatamente el error
                                                                                                                                 para permitir la edición.
                   {{ ¢¢¢ww ¢¢¦ss rr
                                z¢xy¢x¢ vu¢u¢t¦
                                  z x y x                           v u u t                  entero fuera de rango.
        '¢¢xx ww ¢¢|| ¢¢ww
        }~y¢x¢y¢
           } y x y                            v¢u¢u¢t y¢z
                                                v u u t                                y z                                       La basura de un listado se
                                                                                             Si tecleamos GOTO 1000 e
                                                                                    z
                                                                                    {{
                                                                                     z                                           introduce con la finalidad de
                                    †† …… ¢¢‚‚ ¢¢a         „¢ƒ ¢¢€€2
                                                              „ ƒ            €€            introducimos el control de AT
                                                                                                                                 corromper el programa si
                                        ƒŽ¢Œaˆ™‹¢‹VŠ1‰$ˆH
                                        ƒ V¢aE¢`1$G‡‡
                                             Ž  Œ ˆ ‹ ‹ Š ‰ ˆ                               con unos valores adecuados
                             ‘‘ ¢aE¢`1$G‡‡
                                                      ¢Œaˆ™‹¢‹VŠ1‰$ˆH
                                                          Œ ˆ ‹ ‹ Š ‰ ˆ                                                         tratamos de editar lineas o
                                                                                             cambiaremos las coordenadas
 ¡a `ŸežœE›a ™y¢¢––2 ¢¢““2
   ¡  aVe¢Eašš –¢¢a•• ¢¢a’’
              Ÿ œ ›                             ™ ˜˜ ——                     ““ ””                                               modificarlo en alguna de sus
                                                                                             del listado. Responde a la
                         2­ž «¢ª¢©¢§¨ ¥$¤™
                       ¥¥2ž¬¬ ¢¢®¦¦ $E££
                           ­                   « ª © §                             ¥ ¤                                           partes.
                                           ¶¶ y¢¢²² ¢¢a¯¯   y´¢³ ¢¢°°2
                                                          µµ ´ ³             °° ±±           primera pregunta con 3 y a las
                                                      ½¢¼»– ¢¢¸¸2
                                                    ¢yºº ¢¢a··
                                                       ½ ¼ » ¸¸ ¹¹                           tres siguientes con 22, 10 y 10.    Hay que buscar alguna forma
                                                                                             El listado aparecera dividido       de poder ver un listado sin
                                                                                             en dos trozos.


                                                                                                                                La Biblia del Hacker 7
TOP SECRET

tener que modificar ninguna      cambiar el número para que         longitud de lo normal. Lo
linea.                           sea legal.                         hemos visto en muy pocos
                                                                    programas dado que también
En      primer     lugar,   es   Estos dos octetos se ponen al
                                                                    confunde al SL , y una cosa
conveniente saber algunas        revés de cómo sería de
                                                                    que hay que tener muy clara,
cosas acerca de cómo se          esperar. El primero es el más
                                                                    todas las protecciones a nivel
organiza un programa Basic en    significativo y el segundo el
                                                                    Basic que podemos encontrar
la memoria. Las lineas de        de menor peso, esto es así para
                                                                    tienen la particularidad de que
programa se guardan en la        que el interprete funcione más
                                                                    confunden el listado, pero
memoria de la siguiente          rápido.
                                                                    nunca al SO.
forma: primero dos octetos       Después de estos dos bytes
que indican el número de linea                                      En el texto dela linea se
                                 vienen otros dos que indican la
de que se trata. Si nosotros                                        guardan todos los tokens y
                                 longitud de la linea incluyendo
pokeamos en esa dirección con                                       literales por sus respectivos
                                 el código de Enter del final.
otro valor, cambiaremos el                                          códigos ASCII, pero hay una
                                 Seguro que ya se te está
número de linea. Podemos                                            particularidad: los números.
                                 ocurriendo     que     podemos
ponerlo a 0 (cero) o incluso                                      Después del texto de la linea
                                 variar      tambien         esta
a un número imposible, mayor                                        viene un control de Enter
                                 información para complicar
de 9999, dado que en dos                                            (13), que marca la frontera
                                 más las cosas. Ello es posibñe
octetos cabe cualquier número                                       entre lineas.
                                 haciendo que estos octetos
menor de 65535. Obviamente       contengan unos datos falsos,
el efecto contrario también es   marcando más o menos
posible, es decir, podemos




La Biblia del Hacker 8
TOP SECRET


Cómo se guarda un número en un listado.


/$%,%/,$'(/©+$.(5ª,9
$%,   $'(/©+$.  ª,9

Jose Manuel Lazo

          En el capítulo anterior comentábamos la posibilidad de modificar un listado
          Basic de forma que confunda a cualquiera que trate de inspeccionarlo a la
          vez que su funcionamiento es perfectamente correcto. Una de estas
          posibilidades es alterar los valores ASCII de las cifras numéricas.

                                    200, y sin embargo, en el            modificaciones para que se
Imaginemos una linea de
                                    listado se ve un 100                 adapte mejor a este caso
Basic tal como: 10 LET a =
                                    clareamente. Esto además,            concreto. Tecleamos el nuevo
100. El número cien se guarda
                                    tiene        la         siguiente    listado (programa 1), lo
en la memoria de dos formas
                                    particularidad: si editamos la       salvamos en cinta y lo
distintas: primeramente los
                                    linea 10 y la volvemos a             guardamos muy bien pues lo
códigos ASCII del 1, y los dos
                                    introducir en el listado con la      vamos a tener que usar
0, luego el prefijo 14, que
                                    tecla Enter, la representación     intensivamente. Un consejo: si
indica que los próximos 5
                                    en coma flotante se ajusta           tenemos un buen compilador
octetos son la representación
                                    automáticamente a los valores        hacemos lo propio con el
del número en coma flotante, y
                                    inidcados por los códigos            programa y obtendremos unos
a continuación los cinco
                                    ASCII con lo que la linea ya         resultados increíbles.
octetos de esta representación.
                                    no es lo que era. Esta               Con el presente programa se
En el ejmplo se guardaría de la     protección se conoce con el          pueden ver cargadores de
siguiente forma: 49, 48, 48,        nombre de Literales ASCII           Basic sin tener que ubicarlos
14, 0, 0, 100, 0, 0. La             retocadas.                          en la zona del Basic.
representación      ASCII      se
                                    Obviamente existe el efecto
utiliza a la hora de presentar el                                        Para ello, en primer lugar se
                                    contrario, es decir , que en vez
número en la pantalla, y los                                             ha de modificar la cabecera
                                    de      pokear       en     la
cinco octetos en coma flotante                                           del cargador Basic para
                                    representación del número en
se usan a la hora de los                                                 convertirla en bytes y poder
                                    forma decimal a la hora de
cálculos     que     realiza el                                          cargarlo en otra dirección, la
                                    hacer    la     protección se
ordenador.                                                               manere de hacer esto es con el
                                    modifique el literal ASCII           Copyupi publicado en los
Si reflexionamos sore esto nos
                                    De todo lo arriba expuesto se        números 44 y 45.
daremos cuenta de que no hay
                                    deduce que debemos buscar
nada que impida que en la                                                Cargamos el programa con la
                                    alguna forma de ver un listado
pantalla se imprima un número                                            opción LN y luego, con la
                                    sin que por ello se modifique
y, luego , al ahora de                                                   opción CC cambiamos los
                                    sustancialmente.
considerarlo como un cálculo,                                            datos de la cabecera. El dato
sea     totalmente      distinto.   El programa COPYLINE                 número 1(tipo), pasarça a
Bastaría con hacer un Poke en                                            bytes en lugar de programa y
la dirección que contiene el        En la revista número 3 se            el dato número 4 (comienzo),
100, por ejemplo con 200,           publicó       un     programa,       pasará a ser cualquier posición
para que al ejecutar la linea de    COPYLINE, original de Jose           de memoria que vayamos a
Basic con un RUN la variable        María Reus, al que el autor de       tener libre, por ejemplo la
a se actualice con el valor       esta serie le ha hecho algunas       30000. Por supuesto, luego


                                                                        La Biblia del Hacker 9
TOP SECRET

deberemos grabar en cinta el        respuesta    a   la    primera    Es en estas dos últimas
nuevo cargador modificado.          pregunta del Copyline.            columnas en donde deberemos
                                                                      centrar nuestra atención: la
En este punto ya sólo queda         El programa nos lista un Basic
                                                                      antepenúltima indica el valor
cargar     en    memoria       el   que esté ubcado en otra
                                                                      del byte dentro del programa y
Copyline, y haciendo un             dirección     aunque     tenga
                                                                      la última, la más importante,
Break, cargr el programa            cualquier     protección     de
                                                                      puede indicar varias cosas: o
modificado en la dirección          controles de color o cursor. El
                                                                      bien el TOKEN que se halle
30000, por ejemplo. Damos           listado lo produce en 5
                                                                      en el listado, o bien nada si el
RUN        al    Copyline       y   columnas, la primera indica la
                                                                      valor del octeto no es
respondemos a las preguntas         posición de memoria que se
                                                                      imprimible,     o     bien     la
que nos hace con 0 (cero) ,         está explorando, en este caso
                                                                      representación VERDADERA
para la primera linea del           esta posición no nos vale para
                                                                      de un argumento numérico que
listado, 9999 para la última, y     nada ya que, recordemos,
                                                                      se halle dentro del listado. De
30000, la dirección donde           hemos ubicado el cargador en
                                                                      esta forma no nos dejamos
hemos cargado el Basic, para        otro sitio. Las dos columnas
                                                                      engalar por la protección de
la tercera pregunta. EN el caso     siguientes nos informan del
                                                                      las literales ASCII retocadas.
de que el cargador tuviera una      número de linea que se está
linea de auto-run distinta a la 0   explorando y la longitud el       Listado del programa
(cero) habría que darla como        octetos de la misma.              Copyline




La Biblia del Hacker 10
TOP SECRET


Como entrar en un programa y averiguar sus secretos.


/$%,%/,$'(/©+$.(5ª9
$%,   $'(/©+$.  ª

Jose Manuel Lazo

         La semana pasada analizábamos la utilidad de un programa, viejo conocido
         nuestro, COPYLINE, en las tareas de análisis de los cargadores Basic.
         Ahora continuaremos con esta labor incluyendo una interesante tabla que
         recoge todos los controles de color y cursor que maneja Spectrum.

                                     actúan sobre el listado.               listado.
El programa en cuestión nos
                                     Consultando la tabla adjunta
lista un Basic que esté ubicado                                             Con el Copyline tenemos,
                                     puedes averiguar la función de
en otra dirección aunque tenga                                              además, la ventaja de que al
                                     cada uno.
cualquier     protección     de                                             no modificar ninguna de las
controles de color o cursor. El      Estos últimos controles que            partes del programa y no estar
listado lo produce en 5              son a modo de prefijos para            éste en la zona del Basic no se
columnas cuyo significado se         los    parámetros    que    le         corrompen la zona de las
explicó la pasada semana.            acompañan,       con     unos          variables ni la zona de edición,
                                     argumentos erroneos, hacen             lugar en el que se pueden
En la antepenultima columna
                                     que el SO se confunda                  volcar programas en CM tal y
van los controles de color,
                                     bastante a la hora de sacar el         como veremos próximamente.
cursor, etc. Pero estos no

 Controles de Color y Cursor
 Valor Comentario
       Control de print con coma, sirve para que en este punto el listado se desplace a la próxima posición
 6
       de TAB. Va solo.
       Cursor izquierda. Provoca el desplazamiento del cursor una posición a la izquierda
 8
       sobreescribiendose lo que a continuación vaya encima del anterior carácter.
 9     Cursor derecha. Igual que el anterio sólo que hacia la derecha.
       Código de Enter. Indica el final de una línea. Colocado en cualquier posición de una línea puede
 13
       confundir al SO.
 14 Código de un número. Precede a los cinco octetos que representan a un número en coma flotante.
 16 Control de tinta. El código que le siga indicará de qué color se va a poner la tinta.
       Control de papel. De igual manera que el control de tinta indica qué colo va a tomar el papel a partir
 17
       de este punto.
       Control de flash. Indica si el flash está activado, si el próximo octeto es un 1, o no lo está , si el
 18
       próximo octeto es un 0 (cero).
 19 Control de brillo. Funciona de idéntica forma al control de flash.
 20 Control de inverse. Como el control de flash y brillo.
 21 Control de over. Como los tres anteriores.
       Control de AT. Los dos octetos que le sigan indican las nuevas coordenadas por las que va a
 22
       continuar el listado.
       Control de TAB. Funciona igual que el control de AT, pero con un solo octeto que indica la nueva
 23
       columna hacia la que se va a dirigir el listado.

                                                                       La Biblia del Hacker 11
TOP SECRET


Vamos a tratar ahora de la        igualmente que todo el resto                        tokens y literales incoherentes.
protección que raya la frontera   del listado se haya protegido                       Cuando veas esto... NO LO
entre el Basic y el CM. Es el     con controles de color. Si                          TOQUES!!!,         es     mejor
caso de los cargadores que        quitamos éstos, el programa en                      inspeccionarlo tranquilamente
tengan CM en las lineas del       CM se reubicará con lo que                          con     un     desensamblador.
Basic o en las variables del      cuando el cargador lo llame el                      Modifica su dirección con el
mismo Basic.                      mismo no funcionará. De ahí                         Copyline y examina su
                                  la necesidad de ver el listado                      contenido.
Anteriormente apuntabamos la
                                  con el Copyline publicado en
conveniencia de inspeccionar
                                  anteriores semanas.                                  Ejemplo de uso de
el listado Basic del cargador                                                         Copyupi en la
ubicando el mismo en otra         El CM en lineas REM se                              modificacion de una
dirección a fin de modificar en   reconoce por la visión de ésta                      cabecera.
nada su contenido, esta           y a continuación una serie de
necesidad es imperiosa en el
caso de que el programa Basic
tuviera CM enmascarado en el
mismo.
Supongamos que existe una
linea Basic en medio del
listado en el que , despues de
un REM, se halla un programa              Ù$ËÒ ÓÈ çÛ1Çå äÒÜËãâÒàÑËÇ1ÇÞÝÖ ÜÄÛÉÙ×Ö ÕÔ ÇÒa–ÄÏÎÀÌËÉÇ9ÄÂÀ¿¾
                                         é è ÃÌ æ È Ì È ÓÖ ßÖÌáÌ Êß Ã È ÑÖ ÓÍ Ã Ú Ø Ã Ó Ó Á Ñ Ð Ì Á Í ÊÈ Æ Å Ã Á
en       CM;       supongamos     Ü×Ë ÿø Ùyþ Äìÿ ã¦ÇäyÄÄÞý Ò£§Àø§¥£¡ÇÞý àûü ÙÄa–Ò÷ ËÒÄÜËìñðÒÜìê
                                  ûýý û ÷  ø ÷ û ÿ þ þ ú ÷ þ û  ©¨ ¦¤¢  ÿ þ û ÷ ú ù ø óöõ ôóò ê ï îíë           $¥
                                                                                                                   #     !




La Biblia del Hacker 12
TOP SECRET


Rutinas CM en la zona de variables del Basic.


/$%,%/,$'(/©+$.(5ª9,
$%,   $'(/©+$.  ª ,
Jose Manuel Lazo

         Una de las formas más habituales de guardar una rutina de carga de Código
         Máquina dentro de un programa BASIC es hacerlo dentro de la zona de
         variables. De esta forma, si alguien accede al listado no podrá verlo y si
         ejecuta comandos del tipo RUN o CLEAR, la rutina desaparace por arte de
         magia.

                                                                     distintas maneras que hay de
Un bloque CM se puede              Cuando nosotros grabamos un
                                                                     llamar al mismo.
guardar perfectamente en la        programa con AUTO-RUN no
zona de las variables, para        lohacemos de forma que se         La forma más sencilla es
comprender esto es necesario       haga un RUN a la linea que        RANDOMIZE USR dirección.
saber como el interprete graba     marquemos , sino un GOTO.         Siempre que nos hayamos
un programa en Basic:              Una expresión que sería           asegurado de que la dirección
                                   adecuada es: grabar un            que se da sea la verdadera
Cuando damos la orden SAVE
                                   programa con AUTO-GOTO.           podemos pasar ya sin más al
nombre, el SO coge la
                                                                     desensamblado, pero esta
variable PROG y toma la            El código máquina cargador
                                                                     forma es poco corriente
información que la misma           no tiene por qué estar
                                                                     porque es muy facil de
contiene, como el primer           necesariamente dentro del
                                                                     desproteger y porque podría
octeto a grabar la longitud del    listado, al contrario, lo más
                                                                     dar problemas si se tiene el
Basic grabado depende de lo        sencillo para el programador
                                                                     interface 1 conectado.
que marque la variable E-          es situarlo en un bloque de
LINE que señala el final de la     código                 grabado    Otra forma muy común es
zona de variables del Basic.       independientemente, aunque        RANDOMIZE USR (PEEK
Además, en la cabecera del         esto es más sencillo de           23635 + 256 * PEEK 23636)
programa se guarda la longitud     desproteger. Sólo hay qye         + n. Esto podría valer para
del listado Basic dentro del       averiguar la dirección donde      arrancar un programa en CM
bloque grabado, que puede ser      se carga y donde se ejecuta.      ubicado en una linea REM al
igual o inferior al mismo.                                           principio del listado. Si
                                   Formas de ejecutar un             deseamos desensamblar el CM
De todo esto se deduce que el      CM. Cargador                      tendremos que tener en cuenta
señor que haga la protección
                                   Partimos del caso de que en el    que hemos cargado el Basic en
puede guardar perfectamente
                                   programa en Basic, que actua      otra posición para poderlo ver,
un programa en CM en la zona
                                   como cargador, no se ve una       por lo que en todos los CALL
de variables y grabarlo junto
                                   sentencia LOAD por ninguna        y JP que haya en su interior
con    el    programa.     Una
                                   parte, de esto se puede deducir   hay que calcular la dirección
consecuencoa de lo mismo
                                   que los demás bloques del         sobre la que funcionan.
puede ser que si nosotros
ejecutamos un RUN se nos           programa se cargan desde CM.      Si tenemos CM en la zona de
borran las variables, y con ello   No vamos a enrtare todavía en     variables se puede usar la
el programa en CM con el           cómo se crga un programa          forma RANDOMIZE USR
consiguiente cuelgue.              CM, pero vamos a ver las          (PEEK VARS + 256 * PEEK
                                                                     VARS + 1) + N. Esto lo que


                                                                 La Biblia del Hacker 13
TOP SECRET

hace es una llamada a una         Por esta razón, lo que se hace    • Modificar la cabecera por
rutina a partir de lo que         es guardar en esta variable de    bytes para poderlo ubicar en
contiene la variable del          dos bytes la dirección del        otra dirección.
sistema VARS. Cuando nos          elemento de la pila donde se
                                                                    • Examinar el listado con el
encontremos con ello habrá        halla el retorno de error. Así,
                                                                    Copyline detalladamente, un
que tener cuidado, si estamos     cuando el error se produce, el
                                                                    POKE que se pase por alto
viendo el programa sin el         SO mira esta dirección y hace
                                                                    puede ser luego un muro
Copyline, de no hcar ninguna      el salto a la misma.
                                                                    infranqueable.
operación que modifique las       El programa que haga la
variables.                        protección puede aprovechar       • Estudiar la carga de los
Otra manera de llamar a un        esto para pokear en esta          demás bloques del programa,
programa en CM desde el           variable una dirección y luego    es posible que creamos que
basic sin que esta llamada se     producir cualquier error, o       está superprotegido y luego
note es hacer un POKE en la       bien    por     los    métodos    sea un juego de niños.
variable del sistema ERR SP o     normales, BORDER 9 por            • No dejarse engañar: muchas
puntero de la dirección debido    ekemplo, o bien pokeando          veces sentencias de un listado
a que tiene un nivel de           tambien en la variable del        Basic pueden estar de
protección superior a las         sistema ERR NR la cual se         adorno para confundir al
anteriores. Vamos a estudiarla    encarga de contener el informe    Hacker. Tampoco se debe
detenidamente.                    de error que se ha producido.     despreciar ninguna : un simple
Cuando se ha de presentar un      Con esto se consigue que el       BORDER 5 puede significar
informe de error, el SO mira la   SO haga directamente un salto     que luego se chequea la
variable ERR SP que indica la     a una rutina CM que se            variable del sistema BORDCR
direccion del elemento de la      encuentre ubicada en la           para ver si está el color
pila de máquina que contiene,     dirección contenida, a su vez,    previsto.
a su vez, la dirección donde se   en los dos bytes hacia los que    • En algunos listados las
hayan      las    rutinas    de   apunta la variable.               literales ASCII retocadas
tratamiento de errores y acto     En esto se basa la protección     proliferan     como      setas,
seguido, transfiere el control    turbo a nivel Basic, pero de      mientras que en otros no se ha
del programa a esa dirección.     esto ya hablaremos más            usado esta protección.
El SO hace esto así por varias    adelante.                         • Es muy interesante que
circunstancias, pero la más                                         mientras se va viendo el
importante es que en el           Resumen                           listado con el Copyline se
momento en que se produce el      Por lo general la filosofía que   vaya apuntando en un papel un
error normalmente la pila de      hay que seguir a la hora de       listado limpio para que
maquina está desequilibrada       entrar en un programa Basic es    después de quitar la paja se
por lo que un simple RET          muy sencilla.                     pueda estudiar con más
produciría qie el error no se                                       facilidad.
pudiera tratar o que se colgara
el ordenador.




La Biblia del Hacker 14
TOP SECRET


Rutinas de carga en Código Máquina.


/$%,%/,$'(/©+$.(5ª9,,
$%,   $'(/©+$.  ª ,,
Jose Manuel Lazo

         Ya es hora de que estudiemos las distintas maneras en que puede cargarse
         un programa desde CM. En primer lugar veremos la correcta utilización de
         la rutina LOAD de la ROM.

                                   LOAD de la ROM. Si de todas        comienzo, longitud, tipo y
Partimos del supuesto de que
                                   formas deseais profundizar         demás...
habeis aprendido ya los
                                   más sobre el tema os podeis
fundamentos que se han                                                El segundo bloque es el que os
                                   dirigir al especial nº 2 de
sentado en los capítulos                                              interesa, es lo que se llama:
anteriores sonbre protecciones     MICROHOBBY, donde se               carga sin cabecera ya que se
a                                  trata con mayor detalle este
     nivel    Basic,   aunque                                         prescinde de la misma, de lo
volveremos a ello después,         tema.                              cual se deduce que debemos
cuando nos centremos en la         Esta rutina utiliza el registro    de dar los valores de la
protección turbo.                IX para contener la dirección      dirección y longitud del
Ahora vamos a introducirnos        de comienzo donde se van a         bloque de datos en los
de lleno ya en lo que se puede     cargar los bytes, el registro DE   registros que arriba se
llamar protecciones a nivel        para contener la longitud del      exponen.
CM, esto es, cuando el             bloque y el registro A para el     Al elevar el banderín de Carry
                                   flag de identificación.
cargador del programa ejecuta                                         con la instrucción SCF
una llamada a una rutina en        Pero ¡ojo!, esto carga sin la      provocamos que la rutina de la
CM para seguir cargando el         cabecera que contiene la         ROM se cargue, ya que de lo
resto del mismo.
La estructura general del
cargador CM puede ser ésta:



                                   información del nombre y           contrario, sólo verificaría.
                                   longitud de los bytes, lo cual
Una asignación de vectores y       trae consigo el que se cargue      Primeros Trucos en
unas llamadas a rutinas de la      lo primero que entre.              Assembler
ROM. Este es el caso más           Si observais el Gráfico I          Esta es una estructura general
sencillo que usa la rutina de la   podréis ver la manera en que       suponiendo que el progama al
ROM LOAD ubicada en la             están grabados unos bytes o un     cargarse no tuviera cabecera y
dirección #566 (1366 en            programa en la cinta: en           entrase      a       velocidad
decimal)                           primer lugar, el tono guía, y      NORMAL. Por regla general
                                   luego, la cabecera en sí que       se ha de buscar una asignación
La rutina LOAD                                                        de vectores en los registros IX
                                   contiene un primer byte como
Es muy interesante antes de        flag de identificación (0) y       y DE los cuales indican
proseguir, echar un vistazo al     otros 17 conm la información       comienzo y longitud, unas
funcionamiento de la rutina        de      cabecera:     nombre,      llamadas a rutinas cargadoras


                                                                  La Biblia del Hacker 15
TOP SECRET

y un retorno a Basic o un salto   Tendría      el       siguiente   salto directo al programa en
al programa en sí.                significado,   en      nuestros   CM. Por ejemplo:
                                  mnemonicos imaginarios:
Pero hay muchas formas de
enredar esto tan sencillo para    RET = POP PC o JP (pila).
hacerlo menos inteligibles.       De esto se deduce que cuando
                                  efectuamos       un      CALL
Sentemos      primero     unos
                                  guardamos la dirección de         Esto sería un ejemplo de una
sencillos    conceptos      de
                                  retorno en la pila, y si          rutina que cargase otra en la
Assembler:
                                  efectuáramos otro se guardaría    dirección     25000      y  a
En primer lugar la instrucción    la nueva encima sin borrarse la   continuación ejecutase una
CALL dirección significa,         antigua de forma que los RET      llamda a esta rutina con la
como todos vosotros sabeis,       que se vayan ejecutando van       instrucción RET, fijaos en su
una llamada a una rutina en       sacando esas direcciones de       estructura pues abunda más de
CM., pero agrupa una serie de     retorno de la pila. Es muy        lo que sería de esperar.
operaciones como son:             sencillo pokear la dirección de   Otra forma es terminar el
CALL dirección = PUSH PC          retorno en la rutina cargadora    programa en vez de con un
(Program Counter) + JP            y cambiarla por otra para que     RET, con un JP a la rutina
direccion.                        la instrucción RET del final no   LOAD de la ROM,ya que el
En     segundo    lugar,    la    ejecute un retorno a Basic        RET se halla en la propia
instrucción RET que sirve para    como sería de esperar, sino un    rutina de la ROM.
retornar de una rutina CM.




La Biblia del Hacker 16
TOP SECRET


Protecciones en la rutina de carga.


/$%,%/,$'(/©+$.(5ª9,,,
$'(/©+$.  ª ,,,
Jose Manuel Lazo

         Cuando analizamos por primera vez una rutina de carga en Código Máquina
         es muy facil que se nos pasen algunas cosas por alto, como por ejemplo,
         que la rutina cargadora esté en una dirección en donde se va a ubicar el
         propio bloque de bytes, solapándose con la primera.

.
Si el programa que estamos                                           Si su dirección de comienzo
viendo tiene esta característica   Carga desde la rutina
                                   LOAD de la ROM                    nos lo permite, se puede cargar
olvidaros de todo lo que veais                                       en el sitio de trabajo normal,
después del CALL a la rutina       Siempre que nos encontremos       ejecutando previamente un
cargadora ya que después de        una carga estándar de la ROM      CLEAR direccion -1 y luego
concluir la carga es muy           pero sin cabecera, hay que        ubicar un desensamblador en
improbable que la rutina           averiguar la longitud y           algún sitio de la memoria libre
permanezca inalterada. Esta es     dirección donde se ubican los     para      proceder      a    su
la protección de solapamiento      bytes y hacer una cabecera a      desensamblado. Para este
del cargador. Incluso es           medida para poder cargar          cometido     es     fundamental
posible que el programador         desde Basic en otra dirección     disponer          de         un
que protegió el programa haya      más cómoda para su estudio.       desensamblador perfectamente
puesto cosas perfectamente         Esto se hace de la siguiente      reubicable, como por ejemplo
coherentes después del CALL        manera:                           el MONS.
a la rutina de carga, pero ello
                                   Si vemos que al registro DE se    En el caso arriba expuesto de
es únicamente para despistar.
                                   le asigna el valor 30000, por     que los bytes quese cargen se
Otra protección con la que nos     ejemplo, es que la longitud del   solapen     con    la   rutina
podemos encontrar bastantes        código es de 30000. Hay que       cargadora no hemos podido
veces es que una vez sumada        apuntarlo para que no se nos      averiguar la direccion de
la longitud del bloque de          olvide.                           comienzo del programa. Es
código con la dirección donde                                        muy sencillo saberla: es la
                                   Luego buscamos el comienzo
se ubica este de un número                                           dirección de memoria que
                                   en el registro IX; supongamos
mayor de 65535 por lo que la                                         sigue el CALL al la rutina
                                   que es el 25000.
carga, después de terminar con                                       cargadora; por ejemplo:
la dirección más alta del          En este ejemplo para crear una    25000 LD IX,24000
ordenador continua con la          cabecera teclearíamos : SAVE              LD DE,3000
ROM, y hasta es posible que        nombre     CODE       25000,            LD A,255
secuencialmente llegue hasta       30000, pero grabaríamos sólo              SCF
la pantalla. Ello no es más que    el primer bloque (cabecera),              CALL LOAD
una pérdida de tiempo y            cortando la grabación justo en    25013 PATATIN
normalmente se utiliza para        el espacio vacio entre ambos.             PATATAN
que al ser tan enorme el           A continuación, con el
bloque de bytes, no quepa en       Copyupi, grabaríamos después      La dirección de ejecución del
ningún copiador.                   el bloque sin cabecera para       código estaría aquí en la
                                   poder cargarlo más facilmente.    25013, así que a partir de ahí


                                                                 La Biblia del Hacker 17
TOP SECRET

es      donde         debemos      sino para eludir el que pueda       Este es un método sencillo,
desensamblar.                      verse COMO ha hecho ciertas         pero es el más utilizado debido
                                   rutinas y evitar que otras          a que consume poca memoria.
Enmascaramientos y                 personas puedan copiarselas.        Otra forma parecida de
Checksums                                                              realizar un checksum podría
                                   Checksums                           ser que en vez de efecutar una
Vamos a introducirnos ahora
en el estudio de las distintas     Checksum es una palabra             operación XOR en la etiqueta
protecciones que se pueden         inglesa      que        significa   LOOP se efectuase en ADD,
imprimir en el código objeto       literalmente suma de chequeo        con resultados ligeramente
del programa principal (una        y eso es lo que es, una suma        distintos.
vez cargado) como puede ser        de todos los bytes que              Se podrían anidar varios
checksums, enmascaramiento         componen el programa y una          checksums      seguidos      con
con el registro R y otras        comparación con una cifra.          diversos sistemas, con un alto
operaciones por el estilo.         Huelga decir que si no              grado de inteligencia en las
                                   coinciden el programa se            operaciones realizadas, pero,
Partimos del caso de que ya
                                   colgará o saltará a la direccion    afortunadamente, en nuestros
tenemos el programa bien
                                   0 (cero).                           modestos Spectrum no se
estudiado y sabemos dónde se
ubica y en qué dirección           El     checksum    se    hace       pueden desperdiciar unos
arranca.                           principalmente para evitar el       preciosos bytes en codificar
                                   que podamos modificar con           algo tan complejo (o sí...) por
Abordar ahora este asunto                                              lo que será normalmetne un
                                   algún POKE el programa en
puede parecer ilógico ya que                                           simple checksum, eso sí,
                                   cuestión, y hasta es posible
faltan por explicar las rutinas                                        debidamente escondido, es
                                   que el programa lo podamos
de carga distintas de la normal                                        decir, que no estará en la linea
                                   arrancar modificado sin que
y otras cosas interesantes, pero                                       de      desensamblado        que
                                   actúe. Pero es probabilísimo
no lo es tanto si se piensa que                                        normalmente sigamos.
                                   que se halle en el programa
este tema se engloba dentro de
                                   que estemos mirando y que           Una solución para evitar los
las protecciones en CM.
                                   actúe en el momento en que          efectos de un checksum puede
Una vez que empecemos a            menos nos lo esparamos. Esta        ser un simple POKE en una
desensamblar el código objeto      protección se conoce como           dirección de memoria qu eno
se puede pensar que todo lo        BOMBA DE TIEMPO en la               se use, pero que esté dentro de
que      encontraremos        a    jerga informática.                  las posiciones que explora el
continuación está exento de                                            checksum ,contrarestando los
                                   Una forma genérica de
protecciones y que ya tenemos                                          otros POKES que vayamos a
                                   checksum sería la siguiente:
un campo liso, sin ninguna                                             realizar. Esta última soluciçon
muralla que nos estorbe. Nada             LD HL,25000
                                          LD BC,40000                  es       arriesgada      porque
más lejos de la realidad , ya                                          desconcemos         exactamente
que el código objeto del                  LD A,0
                                          LOOP XOR (HL)                cuál es el método utilizado
programa puede muy bien                                                para realizar la comprobación.
                                          INC HL
estar protegido de miradas
ajenas por las protecciones que           DEC BC                       Todo esto si no hemos
                                          LD A, B                      conseguido encontrar la rutina
a continuación se explican.
                                          OR C                         que lo efectúa dado que
Esto ya no lo hace el
                                          JR NZ, LOOP                  entonces sólo sería necesario
programador para evitar la
                                          CP (HL)                      quitarla de en medio.
copia fraudulenta de su
                                          JP NZ, 0
producto ya que se supone que
                                          RET
si hemos llegado a este punto
también podríamos copiarlo,


La Biblia del Hacker 18
TOP SECRET


Protecciones aleatorias con el registro R.


/$%,%/,$'(/©+$.(5ª,;
$%,   $'(/©+$.  ª,;

Jose Manuel Lazo

          Siguiendo con el estudio detallado de los diferentes tips de protecciones
          que se pueden llevar a cabo a nivel de código objeto, vamos a mostraros
          esta semana aquellas que están directamente relacionadas con el registro
          de refresco o registro R.


                                    a la del Checksum salvo que      última, en vez de producir
El registro R es uno de los
                                    todas las direcciones se         código a partir del registro R
muchos      que      tiene     el
                                    Xorean con el registro R       lo produzca a partir de la
microporcesador       de     uso
                                    para producir el verdadero       pantalla de presentación que
específico para él. En este caso
                                    código objeto.                   acompaña al juego:
para la memoria ya que se
encarga de ir contabilizando la     El       siguiente código        Esto podría ser así:
ágina de memoria que le toca        corresponde con una rutina       10 LD HL,40000
ser refrescada por el mismo         desenmascaradora.                20 LD DE,16384
(para      más      información     10     LD HL,25000               30 LD BC,6912
consultar los artículos de          20     LD BC,40000               40 LOOP LD A, (DE)
Primitivo en la sección             30     LD A,0                    50 XOR (HL)
Hardware)                           40     LD R,A                    60 LD (HL),A
                                    50 LOOP LD A,R                   70 INC HL
Lo que a nosotros nos interesa
                                    60     XOR (HL)                  80 INC DE
es que su valor va variando
                                     70    LD (HL),A                 90 DEC BC
secuencialmente       con      el
                                     80    INC HL                    100 LD A,B
tiempo,     y    muy      rápido
                                     90    DEC BC                    110 OR C
(relativamente), se puede decir
                                    100    LD A,B                    120 JR NZ,LOOP
que si consultamos su valor en
                                    110    OR C                      130 RET
un momento dado devuelve un
                                    120    JR NZ,LOOP
número aleatorio, pero que                                           Un Ejemplo
                                    130    RET
para ciertas rutinas muy bien
sincronizadas puede resultar        El colmo del refinamiento        Seguro que ya estabais
predecible (vaya lío ¡eh!).         viene cuando la rutina de        pensando que nos habíamos
                                    desenmascara otra que viene a    olvidado de explicar la manera
De esto se deduce que es muy                                         en que están protegidos ciertos
                                    continuación y pasa el control
sencillo que lo que se cargue                                        programas, pues no, y como el
                                    a la misma, la cual ya
de la cinta sea un montón                                            movimiento se demuestra
                                    verdaderamente desenmascara
informe de bytes y que,                                              andando aquí y ahora os
                                    el código limpio y entre ambas
después de haberlos pasado                                           vamos a exponer, como
                                    no hay ninguna inicialización
por la piedra, oséase una rutina                                     primicia mundial, la manera
                                    del registro R.
desenmascaradora,             se                                     en que se protegió el
conviertan en el verdadero          Por supuesto, ambas técnicas     EVERYONE´S A WALLY
código objeto limpio.               de protección se pueden          programa éste de MIKRO
                                    mezclar y hasta incluso no hay   GEN.
Una rutina desenmascaradora
                                    nada que impida que esta
tiene un aspecto muy parecido


                                                                 La Biblia del Hacker 19
TOP SECRET

De principio el programa se      Luego se salta directamente a      Llegados a este punto, ya se
halla protegido con una rutina   una rutinita ubicada en la         hace el salto al programa
de carga de velocidad distinta   memoria      intermedia     de     principal.
a la normal, cuestión ésta que   impresora que se encarga de        Vemos de esta forma como los
esrtudiaremos más adelante.      producir otra con unos valores     programadores de MIKRO-
La rutina cargadora se ubica     situados después y otros           GEN han impreso en sus
en la última página de           ubicados en la pantalla de         creaciones una serie de
memoria y el bloque que se       presentación mediante un           protecciones           bastante
carga se solapa por encima del   sencillo     pero     efectivo     completas y difíciles de
cargador con lo cual todo lo     algoritmo.                         desproteger. Además, hay que
que se encuentre por encima      Una vez que se ha producido        reconocer que la rutina de
de la cargadora no tiene         esta rutina se pasa el control a   carga rápida que se utiliza para
sentido ya que es lo que se      la misma, la cual se encarga de    cargar     el   código      está
carga de la cinta.               desenmascarar todo el código       perfectamente hecha siendo,
Después de la carga se           que ha entrado de la cinta         hasta incluso, más fiable en la
procede a un Checksum de la      mediante el registro R           carga que la de la ROM
memoria,      incluyendo   el                                       estándar. Esto es todo por esta
cargador, para comprobar que                                        semana...
no se ha tocado nada.




La Biblia del Hacker 20
TOP SECRET


Más protecciones en el código objeto.


/$%,%/,$'(/©+$.(5ª;
$%,   $'(/©+$.  ª

Jose Manuel Lazo

          Volviendo sobre el tema que empezamos la seana pasada, vamos a seguir
          estudiando las distintas protecciones que se pueden realizar sobre el
          código objeto.


                                    analizar el programa o pasarlo     ULTIMATE, el cual inicializa
Usando el registro R se
                                    a disco microdrive.                el registro R en una rutina en
pueden hacer algunos trucos
                                                                       la memoria intermedia de
en el tema de protecciones.         Si lo que deseamos es
                                                                       impresora antes de pasar el
Uno de ellos, difícilmente          analizarlo deberemos buscar
                                                                       control       a     la    rutina
controlable, es el siguiente.       en todo el programa objeto el
                                                                       desenmascaradora. Luego, en
                                    sitio donde se efectua la
Imaginemos que después de                                              medio del programa se efectua
                                    comparación con el contenido
tener cargado el código objeto                                         una comparación del registro
                                    del registro R y quitarla.
se pasa el control a una rutina                                        R y si no corresponde, se
                                    Este método es más tedioso
desenmascaradora, y luego al                                           salta a la direccion 0.
                                    que el que despues se explica,
programa principal. Pero es
                                    pero tiene la ventaja de que       Los nemónicos falsos
probable que antes de entrar
                                    deja el código limpio de
en la rutina desenmascaradora                                          Los nemónicos que manejan
                                    protecciones    y     podemos
nos encontramos con unas                                               los pares de registros IX e IY,
                                    empezar a analizarlo.
instrucciones, tal como estas.                                         llevan los prefijos DD y FD,
LD A,76                             La manera de hacer esto es, o      respectivamente. Cuando el
LD R,A                              bien desensamblarlo o buscar       microprocesador       encuentra
y que después no veamos nada        el código de la instrucción LD     uno de estos prefijos en la
                                    A,R por todo el programa.
relacionado con el registro                                            memoria, sabe que el próximo
R.                                Esta última forma tiene pocas      octeto marca una instrucción
                                    posibilidades de éxito, ya que     del juego que existe para estos
Luego, cuando tecleamos el
código objeto limpio y              es bastante probable que la        registros.
                                    rutina de comprobación esté
queramos ejecutarlo vermos                                             Las instrucciones que manejan
que en un punto específico del      enmascarada para evitar el que     el registro HI, como pareja o
                                    podamos       encontrar      la
programa, no necesariamente                                            separado, no necesitan de
al principio, se cuelga o salta a   comparación con este método.       ningún prefijo.
la direccion 0, reseteando el       Si lo que deseamos es, sin         Solamente está el byte de la
sistema.                            embargo, pasar el programa a       instrucción y a continuación,
                                    disco, podemos hacerlo con el
Cuando nos encontremos en                                              el del dato si existiese.
una situación como la anterior,     código sucio e incluir la rutina
                                    desenmascaradora        con la     Imaginémonos que a una
podemos decir que estamos                                              instrucción normal de manejo
ante una protección de dificil      inicialización del registro R.
                                                                       del registro HI se le pone
control que puede abordarse         Este tipo de protección la         delante de un prefijo para
de dos formas distintas, según      utiliza, por ejemplo, el           manejo de los registros IX o
el propósito que llevaemos,         programa NIGHT SHADE de            IY. Si además sabemos que


                                                                   La Biblia del Hacker 21
TOP SECRET

no hay ninguna instrucción de    con otra (LD A,L) en caso del   que no es INC HL, sino INC
manejo del registro HI que     anterior ejemplo).              IY.
tenga el mismo código que las    Todo esto puede llevar          Todo esto se puede averiguar
del manejo del registro IX ó
                                 consigo que lo que nosotros     de una forma senculla con el
IY, nos daremos cuenta que     estemos desensamblando sea      MONS debido a que cuando
con esto formamos una
                                 mentira viendo en la pantalla   se encuentra una instrucción
instrucción     del       Z-80
                                 una serie de operaciones que    de estas la pone de la siguiente
imposible.                       luego son otras. Vamos a ver    forma:
Y realmente es imposible ya      esto más profundamente con
                                                                 Primero un NOF cuyo código
que juntamos los prefijos de     algunos ejemplos ya que es un
                                                                 de operación es el prefijo con
un tipo de instrucciones con     tema complicado.
                                                                 un (*) delante, indicando con
otras distintas. Con esto
                                 Ejemplos                        esto que ahí se halla algo que
logramos varias cosas: la
                                                                 no está claro. Luego coloca la
primera es confundir a todos     Supongamos             que      instrucción, pero operando con
los    que     no   conozcan     desensamblando un programa      el registro HL tal y como si
precisamente este tipo de        nos encontramos:                no tuviera prefijo.
instrucciones.                   LD A,L
                                                                 Si vemos esto, la forma de
La     segunda,     es    muy    Si vemos que los códigos de     interpretarlo es muy sencilla.
importante       para       el   esta instrucción son: FD 7D     Si el prefijo es FD entonces es
programador ya que se            podemos estar seguros de que    que la operación se realiza
produce una instrucción que      no es LD A,L sino LD A,Y        sobre el registro IY y si es
hace una cosa, por ejemplo LD
                                 Otro ejemplo:                   DD es con el registro IX.
A,Y; y además tiene la
particularidad de que ningun     Si vemos INC HL y los           Con estos ejemplos creemos
desensamblador puede leerla      códigos de operación son: DD,   que será suficiente para su
bien o si puede, la confunde     23 podemos estar seguros de     perfecta comprensión.




La Biblia del Hacker 22
TOP SECRET


Rutinas de carga distintas a las de la ROM.


/$%,%/,$'(/©+$.(5ª;,
$%,   $'(/©+$.  ª ,
Jose Manuel Lazo

          Hay muchas formas de cargar un programa en la memoria del ordenador,
          aunque hasta ahora sólo hemos tenido en cuenta el uso de la rutina LOAD
          de la ROM. Sin embargo, ello no es necesario, y de hecho actualmente casi
          ningún programa utiliza este sistema.


Hace ya bastante tiempo que                                            siempre se encarga de guardar
                                    • Cambio de longitud en el
los programadores se dieron                                            lo referente a los parámetros
                                    tono guía.
cuenta de que cambiando                                                de la velocidad de carga, y el
algunos de los parámetros de        • Quitar      el     byte    de    C guarda dos cosas: los tres
la rutina de carga: distinta        identificación.                    bits de menor peso, el color
velocidad en baudios, tono                                             actual del borde y el quinto bit
                                    • Poner      dos    bytes    de
guía en otra frecuencia o con                                          el tipo de señal que se ha de
                                    identificación seguidos.
cortes como en la protección                                           encontrar en la entrada EAR
turbo o simplemente quitar        • Quitar el byte de paridad o      de media onda o de onda
el byte de paridad, se              falsearlo.                         completa.
conseguía        que       los      • Añadir otros condimentos a       De igual manera, el registro A
copiadores que por entonces       la carga:                          contiene      el   byte     de
existían no pudiesen copiar el                                         identificación o flag y los
programa.                           • Textos o movimientos de          diversos banderines / estados
                                    gráficos según se carga.
Para     ello    es     necesario                                      de la carga.
desarrollar una rutina de carga     • Distintas rayas de color en el   Esto es así en la rutina de la
distinta a la de la ROM y usar      borde.                             ROM, pero si se trata de otra
ésta en el cargador. Algunas        • Quitar las mismas.               cualquiera no tiene por qué ser
de      estas     rutinas    son                                       necesariamente de esta forma.
extremadamente parecidas a la       • Tonos guía en medio de los       Sin embargo, en la mayoría de
original ya que se han copiado      bytes.                             los casos con que nos vamos a
íntegras y lo único que se ha       • Carga aleatoria.                 encontrar, la rutina de carga es
hecho es variar los parámetros                                         una modificación de la de la
de ajuste de la velocidad.          • Carga al revés.                  ROM por lo que la utilización
Otras, sin embargo, son de          En la rutina de carga de la        de los registros va a ser
nueva        concepción.       A    ROM los registros tienen los       prácticamente la misma.
continuación podemos ver las        siguientes cometidos: el IX
variaciones típicas.                contiene la dirección donde va     Problemas con el
                                    a ir el byte que se está           hardware
• Distinta velocidad de carga.
                                    cargando, el L contiene este       Ya os estareis preguntando:
• Cambio de frecuencia en el        byte según se carga, el H          bueno y el hardware ¿qué
tono guía (protección turbo)        contiene una suma de todos         tiene que ver con esto?. Pues
• Pausas en el tono guía            los bytes que se cargan para       mucho, como a continuación
(protección turbo)                  luego compararla con el byte       veremos. En el caso de que se
                                    de paridad, el último. El B        utilicen rutinas de carga


                                                                   La Biblia del Hacker 23
TOP SECRET

distintas, debido a que , por       está bajo (0) y el A14 algo (1)    contiene la primera dirección
arte y gracia del señor Sinclair,   (página 1 si consideramos toda     donde se van a cargar los bytes
ninguna rutina en CM se             la memoria dividida en 4           cuando estos entren desde la
puede correr entre la dirección     páginas.                           cinta.
16384 y 32767 de forma que
                                    De todo esto se deduce, y para     Todo lo que llevamos dicho de
ésta funcione a una velocidad
                                    que veamos las cosas más           protecciones usando la rutina
constante.
                                    claras, que cualquier rutina       de carga de la ROM, vale
La razón es que la ULA del          cargadora distinta a la de la      perfectamente para el caso que
Spectrum, que se encarga            ROM ha de estar ubicada            nos ocupa esta semana, sólo
entre otras cosas de generar la     forzosamente en los 32K            hay que tener en cuenta que en
señal de video del ordenador,       superiores de la memoria           vez de hacer el CALL a la
se halla conectada a la             RAM porque si estuviera en         dirección #0556 se hace a
memoria según el sistema            los 16K inferiores, o sea, en la   donde está ubicada la rutina de
DMA o lo que es lo mismo,           página conflictiva, se vería       carga.
acceso directo para poder leer      interrumpida      cada    cierto   El problema viene en aquellos
fácilmente la memoria de            tiempo por la ULA, por lo que
                                                                       programas en los que los bytes
pantalla.                           la carga daría error.
                                                                       que se cargan de cinta, se
Como sólo existe un Bus de          Lo primero que tenemos que         solapan encima de la rutina
direcciones en el ordenador,        hacer       es        distinguir   cargadora o del programa que
cuando     la    ULA     está       perfectamente la parte que         la maneja. Afortunadamente
accediendo al mismo no puede        gobierna la rutina de carga en     estos programas son los
hacerlo el microprocesador          el CM del cargador de la           menos,      tal    y    como
por lo que éste se detiene          rutina propiamente dicha: hay      comentabamos hace algunas
momentaneamente.                    que tener en cuanta esto dónde     semanas, y el método que se
Esta circunstancia sólo sucede      se empieza a cargar la parte       ha de seguir para poderlos
cuando el micro accede a las        distinta del programa. Si          analizar es cargarlos algunas
direcciones       comprendidas      comienza en la pantalla,           direcciones antes para que no
entre la 16384 y la 32768, es       tendríamos que buscar un LD        se solapen.
decir, aquellas en las que el bit   IX, #4000 debido a que, en
A15 del bus de direcciones          lineas generales, este registro




La Biblia del Hacker 24
TOP SECRET


Rutinas de carga aleatorias..


/$%,%/,$'(/©+$.(5ª;,,
$%,   $'(/©+$.  ª ,,
Jose Manuel Lazo

         Una de las protecciones más sorprendentes que podemos encontrar son
         las Rutinas de carga aleatoria. Puesto que en el Spectrum la aleatoriedad es
         perfectamente controlable, algunos programadores se aprovechan de esta
         facilidad para diseñar rutinas de carga vistosas, a la vez que muy dificiles
         de desproteger.


Hay       un     procedimiento    Estas protecciones pueden dar       Como ejemplo os proponemos
bastante curioso para poder       muchos dolores de cabeza            una corta rutina de carga
cargar bytes aleatoriamente de    debido a que el programador         aleatoria, a la velocidad
la cinta, esto es, para que el    puede perfectamente cargar un       estandar de la ROM. Esta
bloque de datos que está          montón de cachitos del              rutina está muy optimizada
grabado en la cinta no se         programa en distintas zonas de      aunque, eso si, no es capaz de
cargue secuencialmente desde      memoria, o lo que es lo             verificar, pero sin embargo,
la primera dirección a la         mismo: el programa se halla         podemos cargar con ella un
última, son que se carguen        desordenado dentro del bloque       bloque de bytes de forma
unos bytes en una dirección,      grabado en cinta.                   aleatoria tal y como hemos
otros en otra, etc. Todo esto                                         explicado.
son cabeceras de por medio        Desgraciadamente una gran
sino que hay una única            mayoría de los programas que        Tiene dos puntos de entrada:
cabecera al principio del         hemos visto protegidos con          LOAD y BYTES. Si entramos
bloque y luego este de una        este    sistema    tienen  la       por LOAD conseguimos que
longitud variable.                particularidad de que uno de        ésta espere una cabecera al
                                  los primeros bloques que se         cargar, pero si entramos por
Para esto se han de utilizar      cargan va encima del propio         BYTES se procede a la carga
rutinas de carga un tanto         cargador perdiendo sentido la       de los bytes directamente.
especiales que tienen dos         asignaciónde vectores que
entradas, la primera espera la                                        La actualización de los
                                  vengan a continuación.              parámetros es la normal en los
cabecera y luego el bloque de
bytes, y la segunda carga         Pero se dice que a listo, listo y   dos puntos de entrada: en IX
directamente los bytes sin        medio, y este sistema presenta      comienzo, en L. Hay que tener
esperar cabeceras de ningún       una gran ventaja sobre todos        en cuenta que el byte de
tipo. Como el CM es tan           los llamados de carga rápida.       identificación y el byte de
rápido, resulta despreciable el   Como la rutina cargadora tiene      paridad no intervienen, como
tiempo que se desperdicia en      dos puntos de entrada,              tampoco se verifica si se ha
la asignación de parámeto en      podemos usar el que espera los      producido un error de carga.
la carga y la rutina no se        bytes sin tono guía para            Esta vez no le acompaña el
entera de que hahabido una        desviar hacia la ROM un trozo       listado hexadecimal dado que
infima pausa entre el último      de programa que al cargar nos       la rutina sólo se puede usar
byte cargado y el que va a        estorbe, siempre y cuando no        desde CM y con las
entrar ahora.                     sea parte del mismo, esto es,       interrupciones deshabilitadas.
                                  sea una parte del cargador que      Es completamente reubicable
                                  conozcamos.


                                                                 La Biblia del Hacker 25
TOP SECRET

siempre y cuando la usemos         Otros métodos                     si de un programa de carga
en los 32 K superiores por las     Hackerizantes                   normal se tratase.
razones ya aludidas.               De todas formas, si en la carga   Si vemos que la carga es
Esta técnica de carga se puede     se     han   usado      rutinas   aleatoria y queremos usar este
combinar con otra rutina, muy      secuenciales (las normales)       método porque nos parezca
parecida, que efectua una          podemos usar un método            más sencillo, podemos usar la
carga de bytes al revés, esto es   paralelo para analizar el         rutina que proponemos, que
desde el final de la dirección     problema, y es cargar el          con toda seguridad ocupará
de memoria especificada hasta      bloque de bytes en carga          menos memoria que la que
el    principio.    Esto      lo   rápida con un copiador que        utilice el programa, para
encontraremos en programas         tenga esta facilidad y pasar      efectuar el análisis del mismo.
que carguen los atributos          esto a carga normal con el
desde abajo hacia arriba, por      mismo. Luego se opera como
ejemplo.




La Biblia del Hacker 26
TOP SECRET


Código Máquina con Autoejecución.


/$%,%/,$'(/©+$.(5ª;,,,
$%,   $'(/©+$.  ª ,,,

Más contenido relacionado

La actualidad más candente

Hackeo sivernetico
Hackeo siverneticoHackeo sivernetico
Hackeo sivernetico
Snatiago Vargas gomez
 
Penetración con una Backdoor
Penetración con una BackdoorPenetración con una Backdoor
Penetración con una Backdoor
NEGOCIOS PROPIOS
 
webminar ataques de fuerza bruta kali linux
webminar ataques de fuerza bruta kali linux webminar ataques de fuerza bruta kali linux
webminar ataques de fuerza bruta kali linux
Carlos Antonio Leal Saballos
 
Informatica
InformaticaInformatica
Informatica
Nancysimplicia2000
 
Fuerza Bruta con HYDRA y montando un ssh
Fuerza Bruta con HYDRA y montando un sshFuerza Bruta con HYDRA y montando un ssh
Fuerza Bruta con HYDRA y montando un ssh
Tensor
 
Seguridad informatica
Seguridad informaticaSeguridad informatica
Seguridad informaticaLorena Arroyo
 
Seguridad informática 4ºC Carlos Muñoz
Seguridad informática 4ºC Carlos MuñozSeguridad informática 4ºC Carlos Muñoz
Seguridad informática 4ºC Carlos Muñoz
Romyais
 
Tipos de Ataques en la Red - Presentado por Alex, Anny, Dilannia, Sixta y Vir...
Tipos de Ataques en la Red - Presentado por Alex, Anny, Dilannia, Sixta y Vir...Tipos de Ataques en la Red - Presentado por Alex, Anny, Dilannia, Sixta y Vir...
Tipos de Ataques en la Red - Presentado por Alex, Anny, Dilannia, Sixta y Vir...Alex Rafael Polanco Bobadilla
 
el hacker y el cracker
el hacker y el crackerel hacker y el cracker
el hacker y el cracker
isabelit
 
Hackers2r
Hackers2rHackers2r
Hackers2r
napster22
 
Pent test
Pent test Pent test
Pent test
Agustin Vega
 
Internet de las cosas
Internet de las cosasInternet de las cosas
Internet de las cosas
tico2llorente
 

La actualidad más candente (16)

Hackeo sivernetico
Hackeo siverneticoHackeo sivernetico
Hackeo sivernetico
 
Penetración con una Backdoor
Penetración con una BackdoorPenetración con una Backdoor
Penetración con una Backdoor
 
webminar ataques de fuerza bruta kali linux
webminar ataques de fuerza bruta kali linux webminar ataques de fuerza bruta kali linux
webminar ataques de fuerza bruta kali linux
 
Johntheripper
JohntheripperJohntheripper
Johntheripper
 
Johntheripper
JohntheripperJohntheripper
Johntheripper
 
Informatica
InformaticaInformatica
Informatica
 
Hackers y crackers
Hackers y crackersHackers y crackers
Hackers y crackers
 
Fuerza Bruta con HYDRA y montando un ssh
Fuerza Bruta con HYDRA y montando un sshFuerza Bruta con HYDRA y montando un ssh
Fuerza Bruta con HYDRA y montando un ssh
 
Seguridad informatica
Seguridad informaticaSeguridad informatica
Seguridad informatica
 
Yohan
YohanYohan
Yohan
 
Seguridad informática 4ºC Carlos Muñoz
Seguridad informática 4ºC Carlos MuñozSeguridad informática 4ºC Carlos Muñoz
Seguridad informática 4ºC Carlos Muñoz
 
Tipos de Ataques en la Red - Presentado por Alex, Anny, Dilannia, Sixta y Vir...
Tipos de Ataques en la Red - Presentado por Alex, Anny, Dilannia, Sixta y Vir...Tipos de Ataques en la Red - Presentado por Alex, Anny, Dilannia, Sixta y Vir...
Tipos de Ataques en la Red - Presentado por Alex, Anny, Dilannia, Sixta y Vir...
 
el hacker y el cracker
el hacker y el crackerel hacker y el cracker
el hacker y el cracker
 
Hackers2r
Hackers2rHackers2r
Hackers2r
 
Pent test
Pent test Pent test
Pent test
 
Internet de las cosas
Internet de las cosasInternet de las cosas
Internet de las cosas
 

Destacado

Pdf tutorial basico simbolo del sistema
Pdf tutorial basico simbolo del sistemaPdf tutorial basico simbolo del sistema
Pdf tutorial basico simbolo del sistemamonserratricocruz
 
Comandos ms dos(simbolo de sistema)
Comandos ms dos(simbolo de sistema)Comandos ms dos(simbolo de sistema)
Comandos ms dos(simbolo de sistema)castillodavid
 
Comandos del windows 7 hcd-pdf
Comandos del windows 7 hcd-pdfComandos del windows 7 hcd-pdf
Comandos del windows 7 hcd-pdf
AnaSimuy
 
COMANDOS PARA EJECUTAR EN WINDOWS 7 Y QUE SON LOS S.O DE 32 Y 64 BITS
COMANDOS PARA EJECUTAR EN WINDOWS 7 Y QUE SON LOS S.O DE 32 Y 64 BITS COMANDOS PARA EJECUTAR EN WINDOWS 7 Y QUE SON LOS S.O DE 32 Y 64 BITS
COMANDOS PARA EJECUTAR EN WINDOWS 7 Y QUE SON LOS S.O DE 32 Y 64 BITS ITES SAN GABRIEL
 
Delitos informaticos
Delitos informaticos Delitos informaticos
Delitos informaticos
Estiben Mujo Ortega
 
The Original Hacker no. 12
The Original Hacker no. 12The Original Hacker no. 12
The Original Hacker no. 12
Huehue 1
 
La Biblia del Hacker
La Biblia del HackerLa Biblia del Hacker
La Biblia del Hacker
RebelBangarang
 
Manejo de Datos Seguros En La Deepweb
Manejo de Datos Seguros En La DeepwebManejo de Datos Seguros En La Deepweb
Manejo de Datos Seguros En La Deepweb
Omar Escalante
 
En la mente de un hacker cpmx6
En la mente de un hacker cpmx6En la mente de un hacker cpmx6
En la mente de un hacker cpmx6
Cesar Gaitán
 
CRACKERS
CRACKERSCRACKERS
CRACKERS
mayraq302
 
Hackers y crackers
Hackers y crackersHackers y crackers
Hackers y crackers
Edward Sierra
 
técnicas de hackers
técnicas de hackerstécnicas de hackers
técnicas de hackers
hhfd526374848
 
MS-DOS ejemplo
MS-DOS ejemploMS-DOS ejemplo
MS-DOS ejemplo
azrahim
 
Manual de ms dos 6 22
Manual de ms dos 6 22Manual de ms dos 6 22
Manual de ms dos 6 22danieleec1
 
Comandos externos y su función
Comandos externos y su funciónComandos externos y su función
Comandos externos y su función
Ninszu Sakmooreher
 
Comandos Internos y Externos
Comandos Internos y ExternosComandos Internos y Externos
Comandos Internos y Externoskeniis
 
Tecnicas avanzadas de penetracion a sistemas
Tecnicas avanzadas de penetracion a sistemasTecnicas avanzadas de penetracion a sistemas
Tecnicas avanzadas de penetracion a sistemasRafael Seg
 

Destacado (20)

Pdf tutorial basico simbolo del sistema
Pdf tutorial basico simbolo del sistemaPdf tutorial basico simbolo del sistema
Pdf tutorial basico simbolo del sistema
 
Comandos ms dos(simbolo de sistema)
Comandos ms dos(simbolo de sistema)Comandos ms dos(simbolo de sistema)
Comandos ms dos(simbolo de sistema)
 
Comandos del windows 7 hcd-pdf
Comandos del windows 7 hcd-pdfComandos del windows 7 hcd-pdf
Comandos del windows 7 hcd-pdf
 
COMANDOS PARA EJECUTAR EN WINDOWS 7 Y QUE SON LOS S.O DE 32 Y 64 BITS
COMANDOS PARA EJECUTAR EN WINDOWS 7 Y QUE SON LOS S.O DE 32 Y 64 BITS COMANDOS PARA EJECUTAR EN WINDOWS 7 Y QUE SON LOS S.O DE 32 Y 64 BITS
COMANDOS PARA EJECUTAR EN WINDOWS 7 Y QUE SON LOS S.O DE 32 Y 64 BITS
 
Delitos informaticos
Delitos informaticos Delitos informaticos
Delitos informaticos
 
The Original Hacker no. 12
The Original Hacker no. 12The Original Hacker no. 12
The Original Hacker no. 12
 
La Biblia del Hacker
La Biblia del HackerLa Biblia del Hacker
La Biblia del Hacker
 
Rg4l
Rg4lRg4l
Rg4l
 
Manejo de Datos Seguros En La Deepweb
Manejo de Datos Seguros En La DeepwebManejo de Datos Seguros En La Deepweb
Manejo de Datos Seguros En La Deepweb
 
En la mente de un hacker cpmx6
En la mente de un hacker cpmx6En la mente de un hacker cpmx6
En la mente de un hacker cpmx6
 
CRACKERS
CRACKERSCRACKERS
CRACKERS
 
Hackers y crackers
Hackers y crackersHackers y crackers
Hackers y crackers
 
técnicas de hackers
técnicas de hackerstécnicas de hackers
técnicas de hackers
 
MS-DOS ejemplo
MS-DOS ejemploMS-DOS ejemplo
MS-DOS ejemplo
 
Manual de ms dos 6 22
Manual de ms dos 6 22Manual de ms dos 6 22
Manual de ms dos 6 22
 
Manual MS-DOS
Manual MS-DOSManual MS-DOS
Manual MS-DOS
 
Comandos externos y su función
Comandos externos y su funciónComandos externos y su función
Comandos externos y su función
 
Comandos ms dos
Comandos ms dosComandos ms dos
Comandos ms dos
 
Comandos Internos y Externos
Comandos Internos y ExternosComandos Internos y Externos
Comandos Internos y Externos
 
Tecnicas avanzadas de penetracion a sistemas
Tecnicas avanzadas de penetracion a sistemasTecnicas avanzadas de penetracion a sistemas
Tecnicas avanzadas de penetracion a sistemas
 

Similar a La biblia del hacker

Clase 01
Clase 01Clase 01
Clase 01
Tensor
 
Clase 01
Clase 01Clase 01
Clase 01
Tensor
 
Clase 01
Clase 01Clase 01
Clase 01
Tensor
 
Clase 01
Clase 01Clase 01
Clase 01
Tensor
 
Clase 1 21 02-13
Clase 1 21 02-13Clase 1 21 02-13
Clase 1 21 02-13
Tensor
 
Taller 4 periodo daniela herrera
Taller 4 periodo daniela herreraTaller 4 periodo daniela herrera
Taller 4 periodo daniela herreradanielaaaaaaaaa
 
Tipos de virus
Tipos de virusTipos de virus
Tipos de virus
Francis Mendieta
 
Un crack
Un crackUn crack
Un crack
maria_belen
 
Un crack
Un crackUn crack
Un crack
maria_belen
 
Trabajo de informatica (virus)
Trabajo de informatica (virus)Trabajo de informatica (virus)
Trabajo de informatica (virus)
javiersinning
 
Problemas de Seguridad informaticos
Problemas de Seguridad informaticosProblemas de Seguridad informaticos
Problemas de Seguridad informaticosLiss2794
 
Virus informatico ..
Virus informatico ..Virus informatico ..
Virus informatico ..
Oswaldo Hernández
 
Diferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...maryDiferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...maryRicardo Sandoval
 
Diferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...maryDiferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...mary
Mary Aguayo Santana
 
Diferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...maryDiferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...mary
Ricardo Sandoval
 
Diferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...maryDiferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...maryRicardo Sandoval
 
Virus
VirusVirus
Virus y vacunas informaticas nelly
Virus y vacunas informaticas nellyVirus y vacunas informaticas nelly
Virus y vacunas informaticas nelly
nellyjsuescun09
 
Guía teórica seguridad informatica
Guía teórica seguridad informaticaGuía teórica seguridad informatica
Guía teórica seguridad informaticakarencocha98
 

Similar a La biblia del hacker (20)

Clase 01
Clase 01Clase 01
Clase 01
 
Clase 01
Clase 01Clase 01
Clase 01
 
Clase 01
Clase 01Clase 01
Clase 01
 
Clase 01
Clase 01Clase 01
Clase 01
 
Clase 1 21 02-13
Clase 1 21 02-13Clase 1 21 02-13
Clase 1 21 02-13
 
Taller 4 periodo daniela herrera
Taller 4 periodo daniela herreraTaller 4 periodo daniela herrera
Taller 4 periodo daniela herrera
 
Tipos de virus
Tipos de virusTipos de virus
Tipos de virus
 
Un crack
Un crackUn crack
Un crack
 
Un crack
Un crackUn crack
Un crack
 
Trabajo de informatica (virus)
Trabajo de informatica (virus)Trabajo de informatica (virus)
Trabajo de informatica (virus)
 
Problemas de Seguridad informaticos
Problemas de Seguridad informaticosProblemas de Seguridad informaticos
Problemas de Seguridad informaticos
 
Virus informatico ..
Virus informatico ..Virus informatico ..
Virus informatico ..
 
Diferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...maryDiferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...mary
 
Diferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...maryDiferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...mary
 
Diferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...maryDiferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...mary
 
Diferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...maryDiferenciar las funciones del sistema operativo...mary
Diferenciar las funciones del sistema operativo...mary
 
Virus
VirusVirus
Virus
 
Virus y vacunas informaticas nelly
Virus y vacunas informaticas nellyVirus y vacunas informaticas nelly
Virus y vacunas informaticas nelly
 
Guía teórica seguridad informatica
Guía teórica seguridad informaticaGuía teórica seguridad informatica
Guía teórica seguridad informatica
 
Malwares
MalwaresMalwares
Malwares
 

Más de Roberto Cordova Coral

La imaginacion sociologica - Charles Whrigth Mills
La imaginacion sociologica - Charles Whrigth MillsLa imaginacion sociologica - Charles Whrigth Mills
La imaginacion sociologica - Charles Whrigth MillsRoberto Cordova Coral
 
Code lyoko tomo 02 - la ciudad sin nombre
Code lyoko tomo 02 - la ciudad sin nombreCode lyoko tomo 02 - la ciudad sin nombre
Code lyoko tomo 02 - la ciudad sin nombreRoberto Cordova Coral
 
Code lyoko tomo 01 - el castillo subterraneo
Code lyoko tomo 01 - el castillo subterraneoCode lyoko tomo 01 - el castillo subterraneo
Code lyoko tomo 01 - el castillo subterraneoRoberto Cordova Coral
 
Nge manga tomo 01 restaurado
Nge manga tomo 01 restauradoNge manga tomo 01 restaurado
Nge manga tomo 01 restaurado
Roberto Cordova Coral
 
Recomendaciones previas para el estudio de funciones
Recomendaciones previas para el estudio de funcionesRecomendaciones previas para el estudio de funciones
Recomendaciones previas para el estudio de funcionesRoberto Cordova Coral
 

Más de Roberto Cordova Coral (10)

La imaginacion sociologica - Charles Whrigth Mills
La imaginacion sociologica - Charles Whrigth MillsLa imaginacion sociologica - Charles Whrigth Mills
La imaginacion sociologica - Charles Whrigth Mills
 
Code lyoko tomo 02 - la ciudad sin nombre
Code lyoko tomo 02 - la ciudad sin nombreCode lyoko tomo 02 - la ciudad sin nombre
Code lyoko tomo 02 - la ciudad sin nombre
 
Code lyoko tomo 01 - el castillo subterraneo
Code lyoko tomo 01 - el castillo subterraneoCode lyoko tomo 01 - el castillo subterraneo
Code lyoko tomo 01 - el castillo subterraneo
 
Nge manga tomo 05 restaurado
Nge manga tomo 05 restauradoNge manga tomo 05 restaurado
Nge manga tomo 05 restaurado
 
Nge manga tomo 04 restaurado
Nge manga tomo 04 restauradoNge manga tomo 04 restaurado
Nge manga tomo 04 restaurado
 
Nge manga tomo 03 restaurado
Nge manga tomo 03 restauradoNge manga tomo 03 restaurado
Nge manga tomo 03 restaurado
 
Nge manga tomo 02 restaurado
Nge manga tomo 02 restauradoNge manga tomo 02 restaurado
Nge manga tomo 02 restaurado
 
Nge manga tomo 01 restaurado
Nge manga tomo 01 restauradoNge manga tomo 01 restaurado
Nge manga tomo 01 restaurado
 
Web master
Web masterWeb master
Web master
 
Recomendaciones previas para el estudio de funciones
Recomendaciones previas para el estudio de funcionesRecomendaciones previas para el estudio de funciones
Recomendaciones previas para el estudio de funciones
 

Último

IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁIMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
Claude LaCombe
 
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
pablomarin116
 
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docxLecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Alejandrino Halire Ccahuana
 
recursos naturales en chile quinto básico .pptx
recursos naturales en chile quinto básico .pptxrecursos naturales en chile quinto básico .pptx
recursos naturales en chile quinto básico .pptx
Waleska Chaparro
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
20minutos
 
Presidencias radicales (1916 – 1930) (1) (1).pdf
Presidencias radicales (1916 – 1930) (1) (1).pdfPresidencias radicales (1916 – 1930) (1) (1).pdf
Presidencias radicales (1916 – 1930) (1) (1).pdf
MARIANA110300
 
Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024
IES Vicent Andres Estelles
 
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdfGuia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Demetrio Ccesa Rayme
 
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJAPANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
estroba5
 
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdfBlogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
lautyzaracho4
 
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
DanielaBurgosnazario
 
UNA VISITA A SAN PEDRO EN EL VATICANO.pdf
UNA VISITA A SAN PEDRO EN EL VATICANO.pdfUNA VISITA A SAN PEDRO EN EL VATICANO.pdf
UNA VISITA A SAN PEDRO EN EL VATICANO.pdf
Joan Ribes Gallén
 
Docentes y el uso de chatGPT en el Aula Ccesa007.pdf
Docentes y el uso de chatGPT   en el Aula Ccesa007.pdfDocentes y el uso de chatGPT   en el Aula Ccesa007.pdf
Docentes y el uso de chatGPT en el Aula Ccesa007.pdf
Demetrio Ccesa Rayme
 
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascón
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascónElites municipales y propiedades rurales: algunos ejemplos en territorio vascón
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascón
Javier Andreu
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Juan Martín Martín
 
teorema de pitagorasparalaeducacion.pptx
teorema de pitagorasparalaeducacion.pptxteorema de pitagorasparalaeducacion.pptx
teorema de pitagorasparalaeducacion.pptx
ElzebirQuiroga
 
Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1
MauricioSnchez83
 
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
Inteligencia Artificial para Docentes  HIA  Ccesa007.pdfInteligencia Artificial para Docentes  HIA  Ccesa007.pdf
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
Demetrio Ccesa Rayme
 
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
María Sánchez González (@cibermarikiya)
 
el pensamiento critico de paulo freire en basica .pdf
el pensamiento critico de paulo freire en basica .pdfel pensamiento critico de paulo freire en basica .pdf
el pensamiento critico de paulo freire en basica .pdf
almitamtz00
 

Último (20)

IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁIMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
 
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
 
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docxLecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
 
recursos naturales en chile quinto básico .pptx
recursos naturales en chile quinto básico .pptxrecursos naturales en chile quinto básico .pptx
recursos naturales en chile quinto básico .pptx
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
 
Presidencias radicales (1916 – 1930) (1) (1).pdf
Presidencias radicales (1916 – 1930) (1) (1).pdfPresidencias radicales (1916 – 1930) (1) (1).pdf
Presidencias radicales (1916 – 1930) (1) (1).pdf
 
Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024
 
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdfGuia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
 
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJAPANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
 
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdfBlogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
 
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
6° GRADO UNIDAD DE APRENDIZAJE 3 JUNIO.docx
 
UNA VISITA A SAN PEDRO EN EL VATICANO.pdf
UNA VISITA A SAN PEDRO EN EL VATICANO.pdfUNA VISITA A SAN PEDRO EN EL VATICANO.pdf
UNA VISITA A SAN PEDRO EN EL VATICANO.pdf
 
Docentes y el uso de chatGPT en el Aula Ccesa007.pdf
Docentes y el uso de chatGPT   en el Aula Ccesa007.pdfDocentes y el uso de chatGPT   en el Aula Ccesa007.pdf
Docentes y el uso de chatGPT en el Aula Ccesa007.pdf
 
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascón
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascónElites municipales y propiedades rurales: algunos ejemplos en territorio vascón
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascón
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
 
teorema de pitagorasparalaeducacion.pptx
teorema de pitagorasparalaeducacion.pptxteorema de pitagorasparalaeducacion.pptx
teorema de pitagorasparalaeducacion.pptx
 
Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1
 
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
Inteligencia Artificial para Docentes  HIA  Ccesa007.pdfInteligencia Artificial para Docentes  HIA  Ccesa007.pdf
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
 
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
 
el pensamiento critico de paulo freire en basica .pdf
el pensamiento critico de paulo freire en basica .pdfel pensamiento critico de paulo freire en basica .pdf
el pensamiento critico de paulo freire en basica .pdf
 

La biblia del hacker

  • 1. /$ %,%/,$ '(/ +$.(5 Por Jose Manuel Lazo Originalmente publicado en la revista Microhobby.
  • 2. TOP SECRET Como entrar en un programa y averiguar sus secretos /$%,%/,$'(/©+$.(5ª,
  • 3. $%, $'(/©+$. ª,
  • 4. Jose Manuel Lazo Un HACKER, según el diccionario de la lengua inglesa, es una persona capaz de enfrentarse (con éxito) a todas las dificultades que le impone un determinado sistema. ¿Cuántas veces has necesitado examinar el interior de un programa, y no has podido por que te has estrellado contra infranqueables protecciones?. En esta seccion vamos a abordar en profundidad este delicado tema. copia la utilizamos SOLO Debido al masivo avance de la Y, ¿qué pasa con los como back-up de seguridad. piratería del software, las casa poseedores de sistemas de productoras han añadido a sus almacenamiento más eficaces No creas que estás creaciones una serie de y fiables que la cinta de infringiendo alguna ley protecciones para evitar que cassete? desprotegiendo un programa: terceros se adueñen copien o Los compradores de unidades es una labor perfectamente llenen sus bolsillo con este de disco, microdrives, etc., LEGAL siempre y cuando no producto que , la mayoría de maldicen una y otra vez el día negociemos con ello las veces, ha requerido el en que se les ocurrió adquirir enriqueciendonos a costa del esfuerzo de muchas personas uno de estos artilugios, ya que esfuerzo de los demás. Lo durante bastante tiempo. no existen programas en estos hemos dicho muchas veces, y no está de más recordarlo Esto, por una parte, está bien, formatos. La única posibilidad aquí_ estamos en contra de la ya que frena en lo posible la que les queda es adaptar el PIRATERIA porque a la larga piratería, pero bloquea al software de la cinta original. puede hundir la industria del usuario que legalmente ha Por último, hay numerosos software y eso no es bueno adquirido un juego o una usuarios de software que para nadie utilidad y, por cualquier encuentran mayor placer en circunstancia, desea modificar profanar un programa y ver La proteccion del el programa en alguna de sus sus intimidades que en matar a software partes. tal o cual marciano. Ninguna cosa en el mundo de Porque, ¿cuántas veces te los ordenadores es más hubiera gustado ponerle vidas No a la pirateria polifacética que la protección infinitas a ese juego que tienes Con esta serie van a acabarse del software. Existen mil y un arrinconado porque no logras estos problemas, pero los trucos con los cuales se puede pasar de la tercera pantalla o piratas a los que ya se les están proteger un programa y modificar las opciones de poniendo los dientes largos hacerlo inviolable a unos ojos impresora en esta utilidad que que no sigan leyendo, pues no expertos en el tema; existen tanto necesitas?. Y no has aquí NUNCA se va a explicar protecciones en el Basic, en el podido, porque el programita la manera en que se puede CM, aprovechando errores del en cuestión parece un cofre de copiar un programa, cosa que, microprocesador, etc. titanio cerrado a cal y canto por otra parte, es legal si la con mil cerrojos. Cada programa se puede decir que es un mundo aparte, 2 - La Biblia del Hacker
  • 5. TOP SECRET distinto de los demás. El • Protecciones a nivel Código • Pokes en las variables del sistema de protección que ha Máquina. sistema. utilizado una casa, además de • Protecciones a nivel • Anti-merge en los proteger el programa, tiene Hardware. programas. que protegerse a sí mismo para evitar que otra casa lo utilice. • Rutinas de carga distintas de • C.M. En la zona de edición. Por otra parte, no existe un las normales. • C.M. En la zona de sistema de análisis que pueda variables. Las protecciones a nivel aplicarse a todos los basic • Protección turbo. programas como se se tratase de la piedra filosofal. No El Basic es un lenguaje Protecciones a nivel C.M. existe lo que podríamos llamar bastante más sencillo que el los diez mandamientos del árido Assembler, sin embargo En lenguaje Assembler Hacker, al contrario, en esta las protecciones a nivel Basic también se pueden hacer metáfora existiría toda una pueden producir más dolores protecciones bastante potentes, Biblia completa que podría de cabeza de lo que en un sin embargo, a idénticos llenarse de información principio puede suponerse. conocimientos de ambos referente al tema. De ahí el Para enfrentarse con este tipo lenguajes resulta más sencillo nombre de la serie. de protecciones es necesario entrar al C.M.; piénsese que al tener conocimientos de cómo ser un lenguaje más rígido se Sólo la experiencia, un funciona el SO (Sistema pueden realizar menos profundo conocimiento del Operativo) ante una situación trampas. Te puedes encontrar lenguaje Assembler y, sobre determinada. con: todo, del sistema operativo del Spectrum, pueden ser las El 99 por 100 de los • Corrompimiento de la pila. cualidades del verdadero programas llevan protecciones • Popeo de la dirección de Hacker. de este tipo; piénsese que es lo retorno. primero que se encuentra el En esta serie utilizaremos en Hacker al intentar entrasr en • Uso de nemónicos todo momento términos y un programa y es el primer inexistentes. sistemas SENCILLOS, dentro ladrillo que debemos apartar. de lo que cabe. Si se tuviese • Enmascaramiento de código El nivel de protección es, bajo cualquier duda puede ser una con registro R. cierto punto de vista , más alto inestimable ayuda y que lo que se puede encontrar • Checksum´s variados complemento el curso de C.M. en C.M. ya que aquí se pueden Que está en las páginas • Enmascaramiento con hacer más trampas en el ya centrales de esta revista desde pantalla. intrincado juego. el número 42. Dentro de las protecciones a • Longitud excesiva de bytes. La estructura de los nivel Basic, podemos • Solapamiento del cargador. sistemas de proteccion encontrar: • Opacidad en la asignación Vamos a empezar por una • Lineas 0 (cero). de los vectores de carga. clasificación genérica de las distintas protecciones con las • Controles de color. • Basura en listados. que un usuario puede • Basura en los listados. • Saltos a 0 por error de carga. encontrarse. En primer lugar existen: • C.M. En lineas REM. • Deshabilitación del Space • Protecciones a nivel Basic • Literales ASCII retocadas. • Proteccion turbo. La Biblia del Hacker 3
  • 6. TOP SECRET Rutinas de cargas • Tono guía de distinta que una tarjeta esté conectada distintas. frecuencia. en el bus de expansión para La mayoría de los programas funcionar. Ests no no darán • Tono guía ultracorto. excesivos problemas ya que la llevan ahora un sistema de carga distinto al estándar de la • Programas sin cabecera. única finalidad de este dispositivo es cerciorarse de ROM. Esto se hizo en un • Tono guía en medio de los que se posee el programa principio para que los bytes. original. copiones no pudieran copiar el programa en cuestión. Se • Bloques pegados En otras ocasiones , parte del pueden encontrar rutinas de • Rutinas de carga aleatoria software se halla soportado carga de todo tipo, algunas en vez de secuencial. por una memoria EPROM; en tienen sólo el objeto de hacer este caso un nombre más más vistosa la carga, pero Protecciones de acertado es el de FIRMWARE complican las cosas a la hora Hardware por ser un software de estudiarlas. Por último, nos podemos FIRMEMENTE unido a la encontrar con distintas memoria. Este es de difícil • Protección turbo. modificación y se precisan , protecciones hardware. • Distinta velocidad en Algunos programas necesitan además , conocimientos de baudios. hardware. Pero todo se andará. 4 - La Biblia del Hacker
  • 7. TOP SECRET Como entrar en un programa y averiguar sus secretos. /$%,%/,$'(/©+$.(5ª,,
  • 8. $%, $'(/©+$. ª,,
  • 9. Jose Manuel Lazo Prosiguiendo con la serie, esta semana vamos a empezar por lo que primero se puede encontrar en un programa: PROTECCIONES A NIVEL BASIC. la hora de cargarse, no se la tinta, o el papel en medio de El cargador de cualquier ejecutará. una linea y que esta no pueda programa suele estar protegido verse. Es interesante primero en un 99 por 100 de los casos Una vez que tengamos el ver la forma de introducirlos para evitar que se pueda cargado sin auto-run lo efectuar un Break una vez podremos cargar para luego poder saber como que éste se haya ejecutado. Lo tranquilamente y después nos quitarlos fácilmente. primero que hay que hacer es saldrá el informe OK. Prueba a editar una linea de un quitar el auto-run. Es un programa Basic cualquiera y secreto a voces que haciendo Lineas 0 (cero) desplaza el cursor al medio de Merge el programa se carga Al eliminar el listado nos la misma. Pulsa el modo pero no se ejecuta. Debemos podemos encontrar con que extendido y a contnuacion el probar esta forma en primer algunas o todas las lineas 4, por ejemplo. Verás que todo lugar, si bien, también existen tienen como número el 0 el papel de la linea a protecciones para esto (cero). Esto evita que se continuación se pone de color corrompiendo alguna linea del puedan editar y modificar. verder. Pulsa otra vez el modo Basic, con lo que se consigue Hay una manera de cambiar el extendido, pero esta vez el 1 que una vez cargado el número de lineas, aunque esto con Simbol Shift. Ahora es la programa el SO (Sistema no es necesario como más tinta la que ha cambiado. Pulsa Operativo) se cuelque adelante se verá. De momento Enter y podrñas comprobar intentando mergear una y para poner un número a la que el listado Basic a partir de linea falsa del Basic. primera linea del Basic, esta linea tiene otro color puedes probar lo siguiente: distinto y que las ordenes INK Si no se consiguen resultados ¨¢©¢¨¢ £¢¤¢¤¢ ¦ ¤¢£¢¡¢ ¢¢¢§§ ¢¢¦¥¥ ¢¢   ¨ © ¨ £ ¤ ¤   ¤ £ ¡ y PAPER no funcionan en esta positivos, intentaremos hacer '#%¢# !¢ ¢¢¢ ¢¢ '¢¢#$¢ ¢¢ ¢¢ # % ! zona. Esto mismo, pero con una copia del cargador sin )200 )) (( ) 1 PAPER e INK del mismo auto-run, usando para ello el color, puede valer para que programa Copyupi Con esto podremos editarla. una linea del listado sea publicado en nuestros números La razón de editar una línea invisible. 44 y 45. Con su ayuda se del listado es poder quitarle puede cargar un programa los controles de color que Vamos a ver ahora cómo Basic y modificar cualquiera puedan existir dificultando su quitarlos: primero edita la de los parámetros de la visión. linea que has modificado y cabecera. En este caso desplaza el cursor hasta que cambiaremos la linea de auto- Los controles de color en un este no se vea, o sus atributos run del programa por el valor listado son los códigos ASCII cambien a los nuevos. Pulsa 32768, con lo cual el Basic, a entre el 16 y el 21, ambos delete dos veces por cada inclusive. Sirven para cambiar control ya que el mismo tiene La Biblia del Hacker 5
  • 10. TOP SECRET dos códigos dentro del listado color el listado saldrá visible. va a continuar el listado. En m uno es el control La otra se verá más adelante. una linea del Basic se han de propiamente dicho, y otro es el dejar tres espacios en blanco, Un consejo: editar una linea de valor al que cambia este. en el primero irá el control de un programa puede llevar Suponte que tienes un listado AT, y en los siguientes las perfectamente a hacer que el en la pantalla y que solo ves listado se corrompa en caso de coordenadas. un 0 (cero): haz el POKE para que se haya utilizado la Pokeando en los dos espacios cambiar el valor por 1 y edita protección de las literales disponibles para las la linea. Ahora desplaza el ASCII retocadas. coordenadas se puede lograr cursor hacia la derecha pero que al hacer LIST salga con cuidado, parando en el Controles de cursor automáticamente el informe momento en que este no se De la misma forma, también entero fuera de rango, dando vea. Deletea hasta que éste pueden ponerse controles de como coordenadas unas sea perfectamente visible: cursor, haciendo que el listado imposibles, por ejemplo, AT seguro que la linea también lo comience en la parte superior 40,0. es en este momento. Si no lo de la pantalla y que al De igual manera, con los fuera tendrías que volver a continuar lo haga otra vez controles cursor izquierdas, y repetir la operación hasta sobre la primera linea. derecha, 8 y 9, se puede lograr conseguirlo, pues puede haber También puede salir el enmascarar parte del listado, más de uno. informe entero fuera de sobreescribiendo encima del Hay otras dos formas de poder rango. Vamos a ver esto más mismo. contemplar un listado , aunque detenidamente: Estos controles de cursor no se posea controles de color, sin Entre los códigos ASCII el 22 pueden poner ni quitar en necesidad de tener que editar es el control de AT; cuando el modo edición, por lo que hay las lineas. SO se encuentra este control que hacerlo a base de POKES. Una es haciendo un LLIST interpreta los dos siguientes con una impresora; como esta como coordenadas del cursor, no reconoce los controles de en baja resolución, donde se 6 - La Biblia del Hacker
  • 11. TOP SECRET Como entrar en un programa y averiguar sus secretos /$%,%/,$'(/©+$.(5ª,,,
  • 12. $%, $'(/©+$. ª,,,
  • 13. Jose Manuel Lazo En el listado de un programa Basic pueden hacerse determinadas alteraciones de tal forma que sea imposible averiguar su contenido e incluso que, al intentarlo, el propio listado se modifique creando una gran confusión. . Un caso típico es que cuando Teclea GOTO 1000 y prueba Por último, vamos a ver la hacemos LIST, no sale nada, y algunos controles: Primero forma de sobreescribir en el además se nos presenta el uno, por lo que responde a la listado; responde a la primera cursor con una interrogación. primera pregunta con un 1, y a pregunta con 3 y alas tres Esto es porque se ha utilizado la segunda con un 6. Si haces siguientes con 22,0 y 0. un control AT con LIST verás que el texto de la Veremos como el número de coordenadas falsas. Todo esto primera linea se ha desplazado la primera linea ha es en realidad basura dentro a la columna central de TAB, desaparecido imprimiendose el del listado para evitar que se tal y como si hubieramos texto de la primera linea REM vea. Pero la mejor manera de utilizado PRINT con coma. en las coordenadas 0,0. aprender todo esto es Este control es el 6. Otra consecuencia de tener practicando, por lo que vamos Responde ahora a las primera basura en el listado es que si a exponer unos ejemplos pregunta con 1, y a la segunda conseguimos editar la linea, no sencillos: con 22; este es el control de la podemos modificar debido a Primero teclea lo siguiente AT. Puesto que los dos que constantemente está teniendo la memoria del siguientes valores son dos 32, sonando el zumbador de ordenador limpia: que corresponden al espacio, alarma por el error que, FGDEC$ A¢@¢89 6¢5¢4 HE$BB ¢977 ¢33 F D C A @ 8 6 5 4 cuando pulsemos ENTER intencionadamente,se ha Y¢ ¢XX2WEUVT¢S¢R R¢Q1P Y ¢QQ ¢aE`¢¢¢QQ ¢1¢II RR W U T S R R Q P para hacar un listado introducido en ella. iGh1gVf¢decG i H1`¢e`bb h g f dc automático no nos saldrá y ¢1V9tt ¢qq pp wh1v¢uVh9 s¢r¢ w h v u h s r Esto último también puede ser tendremos el cursor junto con iGw ¢a‚EgVd¢w¢ wh1uVf¢d¢xy i H¢h2EV¢¢€€ ¢1`¢¢1gg w h ‚ g d  w w h u f d x debido a que en el listado una interrogación. Sin •$”“1’V‘E‡a ‰y¢¢††2 ¢¢„„2 $¢1`Ea –¢¢a…… ¢¢aƒƒ • ” “ ’ ‘ ‡ ‰ ˆˆ ‡‡ „„ „„ existe un CLEAR que situe el d˜™ E—— d ˜ embargo, al dar la orden LIST RAMTOP excesivamente bajo q¢pp2kEo¢oVn1lmkG iyh aGff2 ¢aEV1$Gjj y¢gg aGaee q k o o n l k i h ff ee saldrá inmediatamente el error para permitir la edición. {{ ¢¢¢ww ¢¢¦ss rr z¢xy¢x¢ vu¢u¢t¦ z x y x v u u t entero fuera de rango. '¢¢xx ww ¢¢|| ¢¢ww }~y¢x¢y¢ } y x y v¢u¢u¢t y¢z v u u t y z La basura de un listado se Si tecleamos GOTO 1000 e z {{ z introduce con la finalidad de †† …… ¢¢‚‚ ¢¢a „¢ƒ ¢¢€€2 „ ƒ €€  introducimos el control de AT corromper el programa si ƒŽ¢Œaˆ™‹¢‹VŠ1‰$ˆH ƒ V¢aE¢`1$G‡‡ Ž  Œ ˆ ‹ ‹ Š ‰ ˆ con unos valores adecuados ‘‘ ¢aE¢`1$G‡‡  ¢Œaˆ™‹¢‹VŠ1‰$ˆH  Œ ˆ ‹ ‹ Š ‰ ˆ tratamos de editar lineas o cambiaremos las coordenadas ¡a `ŸežœE›a ™y¢¢––2 ¢¢““2 ¡ aVe¢Eašš –¢¢a•• ¢¢a’’   Ÿ œ › ™ ˜˜ —— ““ ”” modificarlo en alguna de sus del listado. Responde a la 2­ž «¢ª¢©¢§¨ ¥$¤™ ¥¥2ž¬¬ ¢¢®¦¦ $E££ ­ « ª © § ¥ ¤ partes. ¶¶ y¢¢²² ¢¢a¯¯ y´¢³ ¢¢°°2 µµ ´ ³ °° ±± primera pregunta con 3 y a las ½¢¼»– ¢¢¸¸2 ¢yºº ¢¢a·· ½ ¼ » ¸¸ ¹¹ tres siguientes con 22, 10 y 10. Hay que buscar alguna forma El listado aparecera dividido de poder ver un listado sin en dos trozos. La Biblia del Hacker 7
  • 14. TOP SECRET tener que modificar ninguna cambiar el número para que longitud de lo normal. Lo linea. sea legal. hemos visto en muy pocos programas dado que también En primer lugar, es Estos dos octetos se ponen al confunde al SL , y una cosa conveniente saber algunas revés de cómo sería de que hay que tener muy clara, cosas acerca de cómo se esperar. El primero es el más todas las protecciones a nivel organiza un programa Basic en significativo y el segundo el Basic que podemos encontrar la memoria. Las lineas de de menor peso, esto es así para tienen la particularidad de que programa se guardan en la que el interprete funcione más confunden el listado, pero memoria de la siguiente rápido. nunca al SO. forma: primero dos octetos Después de estos dos bytes que indican el número de linea En el texto dela linea se vienen otros dos que indican la de que se trata. Si nosotros guardan todos los tokens y longitud de la linea incluyendo pokeamos en esa dirección con literales por sus respectivos el código de Enter del final. otro valor, cambiaremos el códigos ASCII, pero hay una Seguro que ya se te está número de linea. Podemos particularidad: los números. ocurriendo que podemos ponerlo a 0 (cero) o incluso Después del texto de la linea variar tambien esta a un número imposible, mayor viene un control de Enter información para complicar de 9999, dado que en dos (13), que marca la frontera más las cosas. Ello es posibñe octetos cabe cualquier número entre lineas. haciendo que estos octetos menor de 65535. Obviamente contengan unos datos falsos, el efecto contrario también es marcando más o menos posible, es decir, podemos La Biblia del Hacker 8
  • 15. TOP SECRET Cómo se guarda un número en un listado. /$%,%/,$'(/©+$.(5ª,9
  • 16. $%, $'(/©+$. ª,9 Jose Manuel Lazo En el capítulo anterior comentábamos la posibilidad de modificar un listado Basic de forma que confunda a cualquiera que trate de inspeccionarlo a la vez que su funcionamiento es perfectamente correcto. Una de estas posibilidades es alterar los valores ASCII de las cifras numéricas. 200, y sin embargo, en el modificaciones para que se Imaginemos una linea de listado se ve un 100 adapte mejor a este caso Basic tal como: 10 LET a = clareamente. Esto además, concreto. Tecleamos el nuevo 100. El número cien se guarda tiene la siguiente listado (programa 1), lo en la memoria de dos formas particularidad: si editamos la salvamos en cinta y lo distintas: primeramente los linea 10 y la volvemos a guardamos muy bien pues lo códigos ASCII del 1, y los dos introducir en el listado con la vamos a tener que usar 0, luego el prefijo 14, que tecla Enter, la representación intensivamente. Un consejo: si indica que los próximos 5 en coma flotante se ajusta tenemos un buen compilador octetos son la representación automáticamente a los valores hacemos lo propio con el del número en coma flotante, y inidcados por los códigos programa y obtendremos unos a continuación los cinco ASCII con lo que la linea ya resultados increíbles. octetos de esta representación. no es lo que era. Esta Con el presente programa se En el ejmplo se guardaría de la protección se conoce con el pueden ver cargadores de siguiente forma: 49, 48, 48, nombre de Literales ASCII Basic sin tener que ubicarlos 14, 0, 0, 100, 0, 0. La retocadas. en la zona del Basic. representación ASCII se Obviamente existe el efecto utiliza a la hora de presentar el Para ello, en primer lugar se contrario, es decir , que en vez número en la pantalla, y los ha de modificar la cabecera de pokear en la cinco octetos en coma flotante del cargador Basic para representación del número en se usan a la hora de los convertirla en bytes y poder forma decimal a la hora de cálculos que realiza el cargarlo en otra dirección, la hacer la protección se ordenador. manere de hacer esto es con el modifique el literal ASCII Copyupi publicado en los Si reflexionamos sore esto nos De todo lo arriba expuesto se números 44 y 45. daremos cuenta de que no hay deduce que debemos buscar nada que impida que en la Cargamos el programa con la alguna forma de ver un listado pantalla se imprima un número opción LN y luego, con la sin que por ello se modifique y, luego , al ahora de opción CC cambiamos los sustancialmente. considerarlo como un cálculo, datos de la cabecera. El dato sea totalmente distinto. El programa COPYLINE número 1(tipo), pasarça a Bastaría con hacer un Poke en bytes en lugar de programa y la dirección que contiene el En la revista número 3 se el dato número 4 (comienzo), 100, por ejemplo con 200, publicó un programa, pasará a ser cualquier posición para que al ejecutar la linea de COPYLINE, original de Jose de memoria que vayamos a Basic con un RUN la variable María Reus, al que el autor de tener libre, por ejemplo la a se actualice con el valor esta serie le ha hecho algunas 30000. Por supuesto, luego La Biblia del Hacker 9
  • 17. TOP SECRET deberemos grabar en cinta el respuesta a la primera Es en estas dos últimas nuevo cargador modificado. pregunta del Copyline. columnas en donde deberemos centrar nuestra atención: la En este punto ya sólo queda El programa nos lista un Basic antepenúltima indica el valor cargar en memoria el que esté ubcado en otra del byte dentro del programa y Copyline, y haciendo un dirección aunque tenga la última, la más importante, Break, cargr el programa cualquier protección de puede indicar varias cosas: o modificado en la dirección controles de color o cursor. El bien el TOKEN que se halle 30000, por ejemplo. Damos listado lo produce en 5 en el listado, o bien nada si el RUN al Copyline y columnas, la primera indica la valor del octeto no es respondemos a las preguntas posición de memoria que se imprimible, o bien la que nos hace con 0 (cero) , está explorando, en este caso representación VERDADERA para la primera linea del esta posición no nos vale para de un argumento numérico que listado, 9999 para la última, y nada ya que, recordemos, se halle dentro del listado. De 30000, la dirección donde hemos ubicado el cargador en esta forma no nos dejamos hemos cargado el Basic, para otro sitio. Las dos columnas engalar por la protección de la tercera pregunta. EN el caso siguientes nos informan del las literales ASCII retocadas. de que el cargador tuviera una número de linea que se está linea de auto-run distinta a la 0 explorando y la longitud el Listado del programa (cero) habría que darla como octetos de la misma. Copyline La Biblia del Hacker 10
  • 18. TOP SECRET Como entrar en un programa y averiguar sus secretos. /$%,%/,$'(/©+$.(5ª9
  • 19. $%, $'(/©+$. ª Jose Manuel Lazo La semana pasada analizábamos la utilidad de un programa, viejo conocido nuestro, COPYLINE, en las tareas de análisis de los cargadores Basic. Ahora continuaremos con esta labor incluyendo una interesante tabla que recoge todos los controles de color y cursor que maneja Spectrum. actúan sobre el listado. listado. El programa en cuestión nos Consultando la tabla adjunta lista un Basic que esté ubicado Con el Copyline tenemos, puedes averiguar la función de en otra dirección aunque tenga además, la ventaja de que al cada uno. cualquier protección de no modificar ninguna de las controles de color o cursor. El Estos últimos controles que partes del programa y no estar listado lo produce en 5 son a modo de prefijos para éste en la zona del Basic no se columnas cuyo significado se los parámetros que le corrompen la zona de las explicó la pasada semana. acompañan, con unos variables ni la zona de edición, argumentos erroneos, hacen lugar en el que se pueden En la antepenultima columna que el SO se confunda volcar programas en CM tal y van los controles de color, bastante a la hora de sacar el como veremos próximamente. cursor, etc. Pero estos no Controles de Color y Cursor Valor Comentario Control de print con coma, sirve para que en este punto el listado se desplace a la próxima posición 6 de TAB. Va solo. Cursor izquierda. Provoca el desplazamiento del cursor una posición a la izquierda 8 sobreescribiendose lo que a continuación vaya encima del anterior carácter. 9 Cursor derecha. Igual que el anterio sólo que hacia la derecha. Código de Enter. Indica el final de una línea. Colocado en cualquier posición de una línea puede 13 confundir al SO. 14 Código de un número. Precede a los cinco octetos que representan a un número en coma flotante. 16 Control de tinta. El código que le siga indicará de qué color se va a poner la tinta. Control de papel. De igual manera que el control de tinta indica qué colo va a tomar el papel a partir 17 de este punto. Control de flash. Indica si el flash está activado, si el próximo octeto es un 1, o no lo está , si el 18 próximo octeto es un 0 (cero). 19 Control de brillo. Funciona de idéntica forma al control de flash. 20 Control de inverse. Como el control de flash y brillo. 21 Control de over. Como los tres anteriores. Control de AT. Los dos octetos que le sigan indican las nuevas coordenadas por las que va a 22 continuar el listado. Control de TAB. Funciona igual que el control de AT, pero con un solo octeto que indica la nueva 23 columna hacia la que se va a dirigir el listado. La Biblia del Hacker 11
  • 20. TOP SECRET Vamos a tratar ahora de la igualmente que todo el resto tokens y literales incoherentes. protección que raya la frontera del listado se haya protegido Cuando veas esto... NO LO entre el Basic y el CM. Es el con controles de color. Si TOQUES!!!, es mejor caso de los cargadores que quitamos éstos, el programa en inspeccionarlo tranquilamente tengan CM en las lineas del CM se reubicará con lo que con un desensamblador. Basic o en las variables del cuando el cargador lo llame el Modifica su dirección con el mismo Basic. mismo no funcionará. De ahí Copyline y examina su la necesidad de ver el listado contenido. Anteriormente apuntabamos la con el Copyline publicado en conveniencia de inspeccionar anteriores semanas. Ejemplo de uso de el listado Basic del cargador Copyupi en la ubicando el mismo en otra El CM en lineas REM se modificacion de una dirección a fin de modificar en reconoce por la visión de ésta cabecera. nada su contenido, esta y a continuación una serie de necesidad es imperiosa en el caso de que el programa Basic tuviera CM enmascarado en el mismo. Supongamos que existe una linea Basic en medio del listado en el que , despues de un REM, se halla un programa Ù$ËÒ ÓÈ çÛ1Çå äÒÜËãâÒàÑËÇ1ÇÞÝÖ ÜÄÛÉÙ×Ö ÕÔ ÇÒa–ÄÏÎÀÌËÉÇ9ÄÂÀ¿¾ é è ÃÌ æ È Ì È ÓÖ ßÖÌáÌ Êß Ã È ÑÖ ÓÍ Ã Ú Ø Ã Ó Ó Á Ñ Ð Ì Á Í ÊÈ Æ Å Ã Á en CM; supongamos Ü×Ë ÿø Ùyþ Äìÿ ã¦ÇäyÄÄÞý Ò£§Àø§¥£¡ÇÞý àûü ÙÄa–Ò÷ ËÒÄÜËìñðÒÜìê ûýý û ÷ ø ÷ û ÿ þ þ ú ÷ þ û ©¨ ¦¤¢  ÿ þ û ÷ ú ù ø óöõ ôóò ê ï îíë $¥ # ! La Biblia del Hacker 12
  • 21. TOP SECRET Rutinas CM en la zona de variables del Basic. /$%,%/,$'(/©+$.(5ª9,
  • 22. $%, $'(/©+$. ª ,
  • 23. Jose Manuel Lazo Una de las formas más habituales de guardar una rutina de carga de Código Máquina dentro de un programa BASIC es hacerlo dentro de la zona de variables. De esta forma, si alguien accede al listado no podrá verlo y si ejecuta comandos del tipo RUN o CLEAR, la rutina desaparace por arte de magia. distintas maneras que hay de Un bloque CM se puede Cuando nosotros grabamos un llamar al mismo. guardar perfectamente en la programa con AUTO-RUN no zona de las variables, para lohacemos de forma que se La forma más sencilla es comprender esto es necesario haga un RUN a la linea que RANDOMIZE USR dirección. saber como el interprete graba marquemos , sino un GOTO. Siempre que nos hayamos un programa en Basic: Una expresión que sería asegurado de que la dirección adecuada es: grabar un que se da sea la verdadera Cuando damos la orden SAVE programa con AUTO-GOTO. podemos pasar ya sin más al nombre, el SO coge la desensamblado, pero esta variable PROG y toma la El código máquina cargador forma es poco corriente información que la misma no tiene por qué estar porque es muy facil de contiene, como el primer necesariamente dentro del desproteger y porque podría octeto a grabar la longitud del listado, al contrario, lo más dar problemas si se tiene el Basic grabado depende de lo sencillo para el programador interface 1 conectado. que marque la variable E- es situarlo en un bloque de LINE que señala el final de la código grabado Otra forma muy común es zona de variables del Basic. independientemente, aunque RANDOMIZE USR (PEEK Además, en la cabecera del esto es más sencillo de 23635 + 256 * PEEK 23636) programa se guarda la longitud desproteger. Sólo hay qye + n. Esto podría valer para del listado Basic dentro del averiguar la dirección donde arrancar un programa en CM bloque grabado, que puede ser se carga y donde se ejecuta. ubicado en una linea REM al igual o inferior al mismo. principio del listado. Si Formas de ejecutar un deseamos desensamblar el CM De todo esto se deduce que el CM. Cargador tendremos que tener en cuenta señor que haga la protección Partimos del caso de que en el que hemos cargado el Basic en puede guardar perfectamente programa en Basic, que actua otra posición para poderlo ver, un programa en CM en la zona como cargador, no se ve una por lo que en todos los CALL de variables y grabarlo junto sentencia LOAD por ninguna y JP que haya en su interior con el programa. Una parte, de esto se puede deducir hay que calcular la dirección consecuencoa de lo mismo que los demás bloques del sobre la que funcionan. puede ser que si nosotros ejecutamos un RUN se nos programa se cargan desde CM. Si tenemos CM en la zona de borran las variables, y con ello No vamos a enrtare todavía en variables se puede usar la el programa en CM con el cómo se crga un programa forma RANDOMIZE USR consiguiente cuelgue. CM, pero vamos a ver las (PEEK VARS + 256 * PEEK VARS + 1) + N. Esto lo que La Biblia del Hacker 13
  • 24. TOP SECRET hace es una llamada a una Por esta razón, lo que se hace • Modificar la cabecera por rutina a partir de lo que es guardar en esta variable de bytes para poderlo ubicar en contiene la variable del dos bytes la dirección del otra dirección. sistema VARS. Cuando nos elemento de la pila donde se • Examinar el listado con el encontremos con ello habrá halla el retorno de error. Así, Copyline detalladamente, un que tener cuidado, si estamos cuando el error se produce, el POKE que se pase por alto viendo el programa sin el SO mira esta dirección y hace puede ser luego un muro Copyline, de no hcar ninguna el salto a la misma. infranqueable. operación que modifique las El programa que haga la variables. protección puede aprovechar • Estudiar la carga de los Otra manera de llamar a un esto para pokear en esta demás bloques del programa, programa en CM desde el variable una dirección y luego es posible que creamos que basic sin que esta llamada se producir cualquier error, o está superprotegido y luego note es hacer un POKE en la bien por los métodos sea un juego de niños. variable del sistema ERR SP o normales, BORDER 9 por • No dejarse engañar: muchas puntero de la dirección debido ekemplo, o bien pokeando veces sentencias de un listado a que tiene un nivel de tambien en la variable del Basic pueden estar de protección superior a las sistema ERR NR la cual se adorno para confundir al anteriores. Vamos a estudiarla encarga de contener el informe Hacker. Tampoco se debe detenidamente. de error que se ha producido. despreciar ninguna : un simple Cuando se ha de presentar un Con esto se consigue que el BORDER 5 puede significar informe de error, el SO mira la SO haga directamente un salto que luego se chequea la variable ERR SP que indica la a una rutina CM que se variable del sistema BORDCR direccion del elemento de la encuentre ubicada en la para ver si está el color pila de máquina que contiene, dirección contenida, a su vez, previsto. a su vez, la dirección donde se en los dos bytes hacia los que • En algunos listados las hayan las rutinas de apunta la variable. literales ASCII retocadas tratamiento de errores y acto En esto se basa la protección proliferan como setas, seguido, transfiere el control turbo a nivel Basic, pero de mientras que en otros no se ha del programa a esa dirección. esto ya hablaremos más usado esta protección. El SO hace esto así por varias adelante. • Es muy interesante que circunstancias, pero la más mientras se va viendo el importante es que en el Resumen listado con el Copyline se momento en que se produce el Por lo general la filosofía que vaya apuntando en un papel un error normalmente la pila de hay que seguir a la hora de listado limpio para que maquina está desequilibrada entrar en un programa Basic es después de quitar la paja se por lo que un simple RET muy sencilla. pueda estudiar con más produciría qie el error no se facilidad. pudiera tratar o que se colgara el ordenador. La Biblia del Hacker 14
  • 25. TOP SECRET Rutinas de carga en Código Máquina. /$%,%/,$'(/©+$.(5ª9,,
  • 26. $%, $'(/©+$. ª ,,
  • 27. Jose Manuel Lazo Ya es hora de que estudiemos las distintas maneras en que puede cargarse un programa desde CM. En primer lugar veremos la correcta utilización de la rutina LOAD de la ROM. LOAD de la ROM. Si de todas comienzo, longitud, tipo y Partimos del supuesto de que formas deseais profundizar demás... habeis aprendido ya los más sobre el tema os podeis fundamentos que se han El segundo bloque es el que os dirigir al especial nº 2 de sentado en los capítulos interesa, es lo que se llama: anteriores sonbre protecciones MICROHOBBY, donde se carga sin cabecera ya que se a trata con mayor detalle este nivel Basic, aunque prescinde de la misma, de lo volveremos a ello después, tema. cual se deduce que debemos cuando nos centremos en la Esta rutina utiliza el registro de dar los valores de la protección turbo. IX para contener la dirección dirección y longitud del Ahora vamos a introducirnos de comienzo donde se van a bloque de datos en los de lleno ya en lo que se puede cargar los bytes, el registro DE registros que arriba se llamar protecciones a nivel para contener la longitud del exponen. CM, esto es, cuando el bloque y el registro A para el Al elevar el banderín de Carry flag de identificación. cargador del programa ejecuta con la instrucción SCF una llamada a una rutina en Pero ¡ojo!, esto carga sin la provocamos que la rutina de la CM para seguir cargando el cabecera que contiene la ROM se cargue, ya que de lo resto del mismo. La estructura general del cargador CM puede ser ésta: información del nombre y contrario, sólo verificaría. longitud de los bytes, lo cual Una asignación de vectores y trae consigo el que se cargue Primeros Trucos en unas llamadas a rutinas de la lo primero que entre. Assembler ROM. Este es el caso más Si observais el Gráfico I Esta es una estructura general sencillo que usa la rutina de la podréis ver la manera en que suponiendo que el progama al ROM LOAD ubicada en la están grabados unos bytes o un cargarse no tuviera cabecera y dirección #566 (1366 en programa en la cinta: en entrase a velocidad decimal) primer lugar, el tono guía, y NORMAL. Por regla general luego, la cabecera en sí que se ha de buscar una asignación La rutina LOAD de vectores en los registros IX contiene un primer byte como Es muy interesante antes de flag de identificación (0) y y DE los cuales indican proseguir, echar un vistazo al otros 17 conm la información comienzo y longitud, unas funcionamiento de la rutina de cabecera: nombre, llamadas a rutinas cargadoras La Biblia del Hacker 15
  • 28. TOP SECRET y un retorno a Basic o un salto Tendría el siguiente salto directo al programa en al programa en sí. significado, en nuestros CM. Por ejemplo: mnemonicos imaginarios: Pero hay muchas formas de enredar esto tan sencillo para RET = POP PC o JP (pila). hacerlo menos inteligibles. De esto se deduce que cuando efectuamos un CALL Sentemos primero unos guardamos la dirección de Esto sería un ejemplo de una sencillos conceptos de retorno en la pila, y si rutina que cargase otra en la Assembler: efectuáramos otro se guardaría dirección 25000 y a En primer lugar la instrucción la nueva encima sin borrarse la continuación ejecutase una CALL dirección significa, antigua de forma que los RET llamda a esta rutina con la como todos vosotros sabeis, que se vayan ejecutando van instrucción RET, fijaos en su una llamada a una rutina en sacando esas direcciones de estructura pues abunda más de CM., pero agrupa una serie de retorno de la pila. Es muy lo que sería de esperar. operaciones como son: sencillo pokear la dirección de Otra forma es terminar el CALL dirección = PUSH PC retorno en la rutina cargadora programa en vez de con un (Program Counter) + JP y cambiarla por otra para que RET, con un JP a la rutina direccion. la instrucción RET del final no LOAD de la ROM,ya que el En segundo lugar, la ejecute un retorno a Basic RET se halla en la propia instrucción RET que sirve para como sería de esperar, sino un rutina de la ROM. retornar de una rutina CM. La Biblia del Hacker 16
  • 29. TOP SECRET Protecciones en la rutina de carga. /$%,%/,$'(/©+$.(5ª9,,,
  • 31. Jose Manuel Lazo Cuando analizamos por primera vez una rutina de carga en Código Máquina es muy facil que se nos pasen algunas cosas por alto, como por ejemplo, que la rutina cargadora esté en una dirección en donde se va a ubicar el propio bloque de bytes, solapándose con la primera. . Si el programa que estamos Si su dirección de comienzo viendo tiene esta característica Carga desde la rutina LOAD de la ROM nos lo permite, se puede cargar olvidaros de todo lo que veais en el sitio de trabajo normal, después del CALL a la rutina Siempre que nos encontremos ejecutando previamente un cargadora ya que después de una carga estándar de la ROM CLEAR direccion -1 y luego concluir la carga es muy pero sin cabecera, hay que ubicar un desensamblador en improbable que la rutina averiguar la longitud y algún sitio de la memoria libre permanezca inalterada. Esta es dirección donde se ubican los para proceder a su la protección de solapamiento bytes y hacer una cabecera a desensamblado. Para este del cargador. Incluso es medida para poder cargar cometido es fundamental posible que el programador desde Basic en otra dirección disponer de un que protegió el programa haya más cómoda para su estudio. desensamblador perfectamente puesto cosas perfectamente Esto se hace de la siguiente reubicable, como por ejemplo coherentes después del CALL manera: el MONS. a la rutina de carga, pero ello Si vemos que al registro DE se En el caso arriba expuesto de es únicamente para despistar. le asigna el valor 30000, por que los bytes quese cargen se Otra protección con la que nos ejemplo, es que la longitud del solapen con la rutina podemos encontrar bastantes código es de 30000. Hay que cargadora no hemos podido veces es que una vez sumada apuntarlo para que no se nos averiguar la direccion de la longitud del bloque de olvide. comienzo del programa. Es código con la dirección donde muy sencillo saberla: es la Luego buscamos el comienzo se ubica este de un número dirección de memoria que en el registro IX; supongamos mayor de 65535 por lo que la sigue el CALL al la rutina que es el 25000. carga, después de terminar con cargadora; por ejemplo: la dirección más alta del En este ejemplo para crear una 25000 LD IX,24000 ordenador continua con la cabecera teclearíamos : SAVE LD DE,3000 ROM, y hasta es posible que nombre CODE 25000, LD A,255 secuencialmente llegue hasta 30000, pero grabaríamos sólo SCF la pantalla. Ello no es más que el primer bloque (cabecera), CALL LOAD una pérdida de tiempo y cortando la grabación justo en 25013 PATATIN normalmente se utiliza para el espacio vacio entre ambos. PATATAN que al ser tan enorme el A continuación, con el bloque de bytes, no quepa en Copyupi, grabaríamos después La dirección de ejecución del ningún copiador. el bloque sin cabecera para código estaría aquí en la poder cargarlo más facilmente. 25013, así que a partir de ahí La Biblia del Hacker 17
  • 32. TOP SECRET es donde debemos sino para eludir el que pueda Este es un método sencillo, desensamblar. verse COMO ha hecho ciertas pero es el más utilizado debido rutinas y evitar que otras a que consume poca memoria. Enmascaramientos y personas puedan copiarselas. Otra forma parecida de Checksums realizar un checksum podría Checksums ser que en vez de efecutar una Vamos a introducirnos ahora en el estudio de las distintas Checksum es una palabra operación XOR en la etiqueta protecciones que se pueden inglesa que significa LOOP se efectuase en ADD, imprimir en el código objeto literalmente suma de chequeo con resultados ligeramente del programa principal (una y eso es lo que es, una suma distintos. vez cargado) como puede ser de todos los bytes que Se podrían anidar varios checksums, enmascaramiento componen el programa y una checksums seguidos con con el registro R y otras comparación con una cifra. diversos sistemas, con un alto operaciones por el estilo. Huelga decir que si no grado de inteligencia en las coinciden el programa se operaciones realizadas, pero, Partimos del caso de que ya colgará o saltará a la direccion afortunadamente, en nuestros tenemos el programa bien 0 (cero). modestos Spectrum no se estudiado y sabemos dónde se ubica y en qué dirección El checksum se hace pueden desperdiciar unos arranca. principalmente para evitar el preciosos bytes en codificar que podamos modificar con algo tan complejo (o sí...) por Abordar ahora este asunto lo que será normalmetne un algún POKE el programa en puede parecer ilógico ya que simple checksum, eso sí, cuestión, y hasta es posible faltan por explicar las rutinas debidamente escondido, es que el programa lo podamos de carga distintas de la normal decir, que no estará en la linea arrancar modificado sin que y otras cosas interesantes, pero de desensamblado que actúe. Pero es probabilísimo no lo es tanto si se piensa que normalmente sigamos. que se halle en el programa este tema se engloba dentro de que estemos mirando y que Una solución para evitar los las protecciones en CM. actúe en el momento en que efectos de un checksum puede Una vez que empecemos a menos nos lo esparamos. Esta ser un simple POKE en una desensamblar el código objeto protección se conoce como dirección de memoria qu eno se puede pensar que todo lo BOMBA DE TIEMPO en la se use, pero que esté dentro de que encontraremos a jerga informática. las posiciones que explora el continuación está exento de checksum ,contrarestando los Una forma genérica de protecciones y que ya tenemos otros POKES que vayamos a checksum sería la siguiente: un campo liso, sin ninguna realizar. Esta última soluciçon muralla que nos estorbe. Nada LD HL,25000 LD BC,40000 es arriesgada porque más lejos de la realidad , ya desconcemos exactamente que el código objeto del LD A,0 LOOP XOR (HL) cuál es el método utilizado programa puede muy bien para realizar la comprobación. INC HL estar protegido de miradas ajenas por las protecciones que DEC BC Todo esto si no hemos LD A, B conseguido encontrar la rutina a continuación se explican. OR C que lo efectúa dado que Esto ya no lo hace el JR NZ, LOOP entonces sólo sería necesario programador para evitar la CP (HL) quitarla de en medio. copia fraudulenta de su JP NZ, 0 producto ya que se supone que RET si hemos llegado a este punto también podríamos copiarlo, La Biblia del Hacker 18
  • 33. TOP SECRET Protecciones aleatorias con el registro R. /$%,%/,$'(/©+$.(5ª,;
  • 34. $%, $'(/©+$. ª,; Jose Manuel Lazo Siguiendo con el estudio detallado de los diferentes tips de protecciones que se pueden llevar a cabo a nivel de código objeto, vamos a mostraros esta semana aquellas que están directamente relacionadas con el registro de refresco o registro R. a la del Checksum salvo que última, en vez de producir El registro R es uno de los todas las direcciones se código a partir del registro R muchos que tiene el Xorean con el registro R lo produzca a partir de la microporcesador de uso para producir el verdadero pantalla de presentación que específico para él. En este caso código objeto. acompaña al juego: para la memoria ya que se encarga de ir contabilizando la El siguiente código Esto podría ser así: ágina de memoria que le toca corresponde con una rutina 10 LD HL,40000 ser refrescada por el mismo desenmascaradora. 20 LD DE,16384 (para más información 10 LD HL,25000 30 LD BC,6912 consultar los artículos de 20 LD BC,40000 40 LOOP LD A, (DE) Primitivo en la sección 30 LD A,0 50 XOR (HL) Hardware) 40 LD R,A 60 LD (HL),A 50 LOOP LD A,R 70 INC HL Lo que a nosotros nos interesa 60 XOR (HL) 80 INC DE es que su valor va variando 70 LD (HL),A 90 DEC BC secuencialmente con el 80 INC HL 100 LD A,B tiempo, y muy rápido 90 DEC BC 110 OR C (relativamente), se puede decir 100 LD A,B 120 JR NZ,LOOP que si consultamos su valor en 110 OR C 130 RET un momento dado devuelve un 120 JR NZ,LOOP número aleatorio, pero que Un Ejemplo 130 RET para ciertas rutinas muy bien sincronizadas puede resultar El colmo del refinamiento Seguro que ya estabais predecible (vaya lío ¡eh!). viene cuando la rutina de pensando que nos habíamos desenmascara otra que viene a olvidado de explicar la manera De esto se deduce que es muy en que están protegidos ciertos continuación y pasa el control sencillo que lo que se cargue programas, pues no, y como el a la misma, la cual ya de la cinta sea un montón movimiento se demuestra verdaderamente desenmascara informe de bytes y que, andando aquí y ahora os el código limpio y entre ambas después de haberlos pasado vamos a exponer, como no hay ninguna inicialización por la piedra, oséase una rutina primicia mundial, la manera del registro R. desenmascaradora, se en que se protegió el conviertan en el verdadero Por supuesto, ambas técnicas EVERYONE´S A WALLY código objeto limpio. de protección se pueden programa éste de MIKRO mezclar y hasta incluso no hay GEN. Una rutina desenmascaradora nada que impida que esta tiene un aspecto muy parecido La Biblia del Hacker 19
  • 35. TOP SECRET De principio el programa se Luego se salta directamente a Llegados a este punto, ya se halla protegido con una rutina una rutinita ubicada en la hace el salto al programa de carga de velocidad distinta memoria intermedia de principal. a la normal, cuestión ésta que impresora que se encarga de Vemos de esta forma como los esrtudiaremos más adelante. producir otra con unos valores programadores de MIKRO- La rutina cargadora se ubica situados después y otros GEN han impreso en sus en la última página de ubicados en la pantalla de creaciones una serie de memoria y el bloque que se presentación mediante un protecciones bastante carga se solapa por encima del sencillo pero efectivo completas y difíciles de cargador con lo cual todo lo algoritmo. desproteger. Además, hay que que se encuentre por encima Una vez que se ha producido reconocer que la rutina de de la cargadora no tiene esta rutina se pasa el control a carga rápida que se utiliza para sentido ya que es lo que se la misma, la cual se encarga de cargar el código está carga de la cinta. desenmascarar todo el código perfectamente hecha siendo, Después de la carga se que ha entrado de la cinta hasta incluso, más fiable en la procede a un Checksum de la mediante el registro R carga que la de la ROM memoria, incluyendo el estándar. Esto es todo por esta cargador, para comprobar que semana... no se ha tocado nada. La Biblia del Hacker 20
  • 36. TOP SECRET Más protecciones en el código objeto. /$%,%/,$'(/©+$.(5ª;
  • 37. $%, $'(/©+$. ª Jose Manuel Lazo Volviendo sobre el tema que empezamos la seana pasada, vamos a seguir estudiando las distintas protecciones que se pueden realizar sobre el código objeto. analizar el programa o pasarlo ULTIMATE, el cual inicializa Usando el registro R se a disco microdrive. el registro R en una rutina en pueden hacer algunos trucos la memoria intermedia de en el tema de protecciones. Si lo que deseamos es impresora antes de pasar el Uno de ellos, difícilmente analizarlo deberemos buscar control a la rutina controlable, es el siguiente. en todo el programa objeto el desenmascaradora. Luego, en sitio donde se efectua la Imaginemos que después de medio del programa se efectua comparación con el contenido tener cargado el código objeto una comparación del registro del registro R y quitarla. se pasa el control a una rutina R y si no corresponde, se Este método es más tedioso desenmascaradora, y luego al salta a la direccion 0. que el que despues se explica, programa principal. Pero es pero tiene la ventaja de que Los nemónicos falsos probable que antes de entrar deja el código limpio de en la rutina desenmascaradora Los nemónicos que manejan protecciones y podemos nos encontramos con unas los pares de registros IX e IY, empezar a analizarlo. instrucciones, tal como estas. llevan los prefijos DD y FD, LD A,76 La manera de hacer esto es, o respectivamente. Cuando el LD R,A bien desensamblarlo o buscar microprocesador encuentra y que después no veamos nada el código de la instrucción LD uno de estos prefijos en la A,R por todo el programa. relacionado con el registro memoria, sabe que el próximo R. Esta última forma tiene pocas octeto marca una instrucción posibilidades de éxito, ya que del juego que existe para estos Luego, cuando tecleamos el código objeto limpio y es bastante probable que la registros. rutina de comprobación esté queramos ejecutarlo vermos Las instrucciones que manejan que en un punto específico del enmascarada para evitar el que el registro HI, como pareja o podamos encontrar la programa, no necesariamente separado, no necesitan de al principio, se cuelga o salta a comparación con este método. ningún prefijo. la direccion 0, reseteando el Si lo que deseamos es, sin Solamente está el byte de la sistema. embargo, pasar el programa a instrucción y a continuación, disco, podemos hacerlo con el Cuando nos encontremos en el del dato si existiese. una situación como la anterior, código sucio e incluir la rutina desenmascaradora con la Imaginémonos que a una podemos decir que estamos instrucción normal de manejo ante una protección de dificil inicialización del registro R. del registro HI se le pone control que puede abordarse Este tipo de protección la delante de un prefijo para de dos formas distintas, según utiliza, por ejemplo, el manejo de los registros IX o el propósito que llevaemos, programa NIGHT SHADE de IY. Si además sabemos que La Biblia del Hacker 21
  • 38. TOP SECRET no hay ninguna instrucción de con otra (LD A,L) en caso del que no es INC HL, sino INC manejo del registro HI que anterior ejemplo). IY. tenga el mismo código que las Todo esto puede llevar Todo esto se puede averiguar del manejo del registro IX ó consigo que lo que nosotros de una forma senculla con el IY, nos daremos cuenta que estemos desensamblando sea MONS debido a que cuando con esto formamos una mentira viendo en la pantalla se encuentra una instrucción instrucción del Z-80 una serie de operaciones que de estas la pone de la siguiente imposible. luego son otras. Vamos a ver forma: Y realmente es imposible ya esto más profundamente con Primero un NOF cuyo código que juntamos los prefijos de algunos ejemplos ya que es un de operación es el prefijo con un tipo de instrucciones con tema complicado. un (*) delante, indicando con otras distintas. Con esto Ejemplos esto que ahí se halla algo que logramos varias cosas: la no está claro. Luego coloca la primera es confundir a todos Supongamos que instrucción, pero operando con los que no conozcan desensamblando un programa el registro HL tal y como si precisamente este tipo de nos encontramos: no tuviera prefijo. instrucciones. LD A,L Si vemos esto, la forma de La segunda, es muy Si vemos que los códigos de interpretarlo es muy sencilla. importante para el esta instrucción son: FD 7D Si el prefijo es FD entonces es programador ya que se podemos estar seguros de que que la operación se realiza produce una instrucción que no es LD A,L sino LD A,Y sobre el registro IY y si es hace una cosa, por ejemplo LD Otro ejemplo: DD es con el registro IX. A,Y; y además tiene la particularidad de que ningun Si vemos INC HL y los Con estos ejemplos creemos desensamblador puede leerla códigos de operación son: DD, que será suficiente para su bien o si puede, la confunde 23 podemos estar seguros de perfecta comprensión. La Biblia del Hacker 22
  • 39. TOP SECRET Rutinas de carga distintas a las de la ROM. /$%,%/,$'(/©+$.(5ª;,
  • 40. $%, $'(/©+$. ª ,
  • 41. Jose Manuel Lazo Hay muchas formas de cargar un programa en la memoria del ordenador, aunque hasta ahora sólo hemos tenido en cuenta el uso de la rutina LOAD de la ROM. Sin embargo, ello no es necesario, y de hecho actualmente casi ningún programa utiliza este sistema. Hace ya bastante tiempo que siempre se encarga de guardar • Cambio de longitud en el los programadores se dieron lo referente a los parámetros tono guía. cuenta de que cambiando de la velocidad de carga, y el algunos de los parámetros de • Quitar el byte de C guarda dos cosas: los tres la rutina de carga: distinta identificación. bits de menor peso, el color velocidad en baudios, tono actual del borde y el quinto bit • Poner dos bytes de guía en otra frecuencia o con el tipo de señal que se ha de identificación seguidos. cortes como en la protección encontrar en la entrada EAR turbo o simplemente quitar • Quitar el byte de paridad o de media onda o de onda el byte de paridad, se falsearlo. completa. conseguía que los • Añadir otros condimentos a De igual manera, el registro A copiadores que por entonces la carga: contiene el byte de existían no pudiesen copiar el identificación o flag y los programa. • Textos o movimientos de diversos banderines / estados gráficos según se carga. Para ello es necesario de la carga. desarrollar una rutina de carga • Distintas rayas de color en el Esto es así en la rutina de la distinta a la de la ROM y usar borde. ROM, pero si se trata de otra ésta en el cargador. Algunas • Quitar las mismas. cualquiera no tiene por qué ser de estas rutinas son necesariamente de esta forma. extremadamente parecidas a la • Tonos guía en medio de los Sin embargo, en la mayoría de original ya que se han copiado bytes. los casos con que nos vamos a íntegras y lo único que se ha • Carga aleatoria. encontrar, la rutina de carga es hecho es variar los parámetros una modificación de la de la de ajuste de la velocidad. • Carga al revés. ROM por lo que la utilización Otras, sin embargo, son de En la rutina de carga de la de los registros va a ser nueva concepción. A ROM los registros tienen los prácticamente la misma. continuación podemos ver las siguientes cometidos: el IX variaciones típicas. contiene la dirección donde va Problemas con el a ir el byte que se está hardware • Distinta velocidad de carga. cargando, el L contiene este Ya os estareis preguntando: • Cambio de frecuencia en el byte según se carga, el H bueno y el hardware ¿qué tono guía (protección turbo) contiene una suma de todos tiene que ver con esto?. Pues • Pausas en el tono guía los bytes que se cargan para mucho, como a continuación (protección turbo) luego compararla con el byte veremos. En el caso de que se de paridad, el último. El B utilicen rutinas de carga La Biblia del Hacker 23
  • 42. TOP SECRET distintas, debido a que , por está bajo (0) y el A14 algo (1) contiene la primera dirección arte y gracia del señor Sinclair, (página 1 si consideramos toda donde se van a cargar los bytes ninguna rutina en CM se la memoria dividida en 4 cuando estos entren desde la puede correr entre la dirección páginas. cinta. 16384 y 32767 de forma que De todo esto se deduce, y para Todo lo que llevamos dicho de ésta funcione a una velocidad que veamos las cosas más protecciones usando la rutina constante. claras, que cualquier rutina de carga de la ROM, vale La razón es que la ULA del cargadora distinta a la de la perfectamente para el caso que Spectrum, que se encarga ROM ha de estar ubicada nos ocupa esta semana, sólo entre otras cosas de generar la forzosamente en los 32K hay que tener en cuenta que en señal de video del ordenador, superiores de la memoria vez de hacer el CALL a la se halla conectada a la RAM porque si estuviera en dirección #0556 se hace a memoria según el sistema los 16K inferiores, o sea, en la donde está ubicada la rutina de DMA o lo que es lo mismo, página conflictiva, se vería carga. acceso directo para poder leer interrumpida cada cierto El problema viene en aquellos fácilmente la memoria de tiempo por la ULA, por lo que programas en los que los bytes pantalla. la carga daría error. que se cargan de cinta, se Como sólo existe un Bus de Lo primero que tenemos que solapan encima de la rutina direcciones en el ordenador, hacer es distinguir cargadora o del programa que cuando la ULA está perfectamente la parte que la maneja. Afortunadamente accediendo al mismo no puede gobierna la rutina de carga en estos programas son los hacerlo el microprocesador el CM del cargador de la menos, tal y como por lo que éste se detiene rutina propiamente dicha: hay comentabamos hace algunas momentaneamente. que tener en cuanta esto dónde semanas, y el método que se Esta circunstancia sólo sucede se empieza a cargar la parte ha de seguir para poderlos cuando el micro accede a las distinta del programa. Si analizar es cargarlos algunas direcciones comprendidas comienza en la pantalla, direcciones antes para que no entre la 16384 y la 32768, es tendríamos que buscar un LD se solapen. decir, aquellas en las que el bit IX, #4000 debido a que, en A15 del bus de direcciones lineas generales, este registro La Biblia del Hacker 24
  • 43. TOP SECRET Rutinas de carga aleatorias.. /$%,%/,$'(/©+$.(5ª;,,
  • 44. $%, $'(/©+$. ª ,,
  • 45. Jose Manuel Lazo Una de las protecciones más sorprendentes que podemos encontrar son las Rutinas de carga aleatoria. Puesto que en el Spectrum la aleatoriedad es perfectamente controlable, algunos programadores se aprovechan de esta facilidad para diseñar rutinas de carga vistosas, a la vez que muy dificiles de desproteger. Hay un procedimiento Estas protecciones pueden dar Como ejemplo os proponemos bastante curioso para poder muchos dolores de cabeza una corta rutina de carga cargar bytes aleatoriamente de debido a que el programador aleatoria, a la velocidad la cinta, esto es, para que el puede perfectamente cargar un estandar de la ROM. Esta bloque de datos que está montón de cachitos del rutina está muy optimizada grabado en la cinta no se programa en distintas zonas de aunque, eso si, no es capaz de cargue secuencialmente desde memoria, o lo que es lo verificar, pero sin embargo, la primera dirección a la mismo: el programa se halla podemos cargar con ella un última, son que se carguen desordenado dentro del bloque bloque de bytes de forma unos bytes en una dirección, grabado en cinta. aleatoria tal y como hemos otros en otra, etc. Todo esto explicado. son cabeceras de por medio Desgraciadamente una gran sino que hay una única mayoría de los programas que Tiene dos puntos de entrada: cabecera al principio del hemos visto protegidos con LOAD y BYTES. Si entramos bloque y luego este de una este sistema tienen la por LOAD conseguimos que longitud variable. particularidad de que uno de ésta espere una cabecera al los primeros bloques que se cargar, pero si entramos por Para esto se han de utilizar cargan va encima del propio BYTES se procede a la carga rutinas de carga un tanto cargador perdiendo sentido la de los bytes directamente. especiales que tienen dos asignaciónde vectores que entradas, la primera espera la La actualización de los vengan a continuación. parámetros es la normal en los cabecera y luego el bloque de bytes, y la segunda carga Pero se dice que a listo, listo y dos puntos de entrada: en IX directamente los bytes sin medio, y este sistema presenta comienzo, en L. Hay que tener esperar cabeceras de ningún una gran ventaja sobre todos en cuenta que el byte de tipo. Como el CM es tan los llamados de carga rápida. identificación y el byte de rápido, resulta despreciable el Como la rutina cargadora tiene paridad no intervienen, como tiempo que se desperdicia en dos puntos de entrada, tampoco se verifica si se ha la asignación de parámeto en podemos usar el que espera los producido un error de carga. la carga y la rutina no se bytes sin tono guía para Esta vez no le acompaña el entera de que hahabido una desviar hacia la ROM un trozo listado hexadecimal dado que infima pausa entre el último de programa que al cargar nos la rutina sólo se puede usar byte cargado y el que va a estorbe, siempre y cuando no desde CM y con las entrar ahora. sea parte del mismo, esto es, interrupciones deshabilitadas. sea una parte del cargador que Es completamente reubicable conozcamos. La Biblia del Hacker 25
  • 46. TOP SECRET siempre y cuando la usemos Otros métodos si de un programa de carga en los 32 K superiores por las Hackerizantes normal se tratase. razones ya aludidas. De todas formas, si en la carga Si vemos que la carga es Esta técnica de carga se puede se han usado rutinas aleatoria y queremos usar este combinar con otra rutina, muy secuenciales (las normales) método porque nos parezca parecida, que efectua una podemos usar un método más sencillo, podemos usar la carga de bytes al revés, esto es paralelo para analizar el rutina que proponemos, que desde el final de la dirección problema, y es cargar el con toda seguridad ocupará de memoria especificada hasta bloque de bytes en carga menos memoria que la que el principio. Esto lo rápida con un copiador que utilice el programa, para encontraremos en programas tenga esta facilidad y pasar efectuar el análisis del mismo. que carguen los atributos esto a carga normal con el desde abajo hacia arriba, por mismo. Luego se opera como ejemplo. La Biblia del Hacker 26
  • 47. TOP SECRET Código Máquina con Autoejecución. /$%,%/,$'(/©+$.(5ª;,,,
  • 48. $%, $'(/©+$. ª ,,,