Bueno gente, aquí daré comienzo a este pequeño cursillo orientado a aquellas personas que tienen deseos de iniciarse en el mundo del crack , no pretende ser el tutorial de oro, pero si aclarar de forma sencilla ciertos aspectos que lograran clarificar la cuestión, y ayudarnos a entender de que se trata el tema.
Bueno lo primero que haré será hablar del lenguaje Assembler. Siempre que querramos crackear un programa lo ke deberemos hacer será desensamblarlo, existen varias herramientas para lograr este objetivo, como el famoso Softice o el OllyDBG (mi favorito ;) y en el que basaré este curso).
El Assembler (ASM de ahora en más) es un idioma de baja definición, es decir, que se halla , más cerca del lenguaje de las computadoras que el c/c++/VB y otros por ejemplo. Muchos se deberán estar preguntando a esta altura, si tienen ke estudiar tooooodo un lenguaje para poder crackear un simple programa, la respuesta es ke no (obviamente siempre es mejor acrecentar nuestros conocimientos ;) ) , pero lo cierto es ke solo es necesario usar un poko nuestro sentido común y conocer las instrucciones que nos interesan.
Entrando ya estrictamente en ASM, les recomiendo desensamblar algún programilla para ver el aspecto, haré una reseña y explicaré nada más las ordenes que pueden resultar de nuestro interés.Cuando desensamblemos el programa obtendremos algo como esto:

Aquí podemos ver todas las instrucciones que la máquina recibe por parte del programa.
Entre estas veremos algunas que son de suma importancia para nosotros que son las instrucciones CALL,JNZ,JE,TEST,CMP. Antes de especificarlas remarcaré que este programa se maneja en sistema hexagesimal de numeración.
CALL: Esta orden lo que hace es llamar a otra función la que realizará alguna operación, devolviendo posteriormente algún valor al programa.
TEST/CMP: Esta orden lo que realiza es una comparación entre dos valores, o de un valor con si mismo puede ser también, devolviendo un resultado a esta comparación 0 (FALSO) o 1 (VERDADERO).
JNZ: Esta orden realizará un salto hacia otra parte del programa en caso de que los valores chekeados sean distintos.
JNE: Esta orden realizará un salto hacia otra parte del programa en caso de que los valores chekeados sean iguales.
JMP: Esta orden aunque olvidé mencionarla arriba, es también importante, lo que hace es realizar un salto si o si, independientemente de que se compare un valor o no, o del resultado de una comparación.
Básicamente esas serán las instrucciones que nos ocuparán y serán de nuestro interés, les recomiendo que lean el curso de ASM DESDE CERO de PABLO BARRON , que no es muy largo y es bastante completo y entendible respecto al tema, aunque si entendieron lo de arriba les bastará para comenzar.
Les aclaré también que el OllyDBG es un debuger, es decir un debugeador, lo que hace aquí es hacer correr el programa para que podamos investigarlo mejor, igualmente entenderán mejor los que les quise decir si simplemente cogen el Olly , desensamblan algún programa y selecciones la opción Debug-->RUN, esto nos permitirá por decirlo de alguna manera, trabajar con el programa "en vivo" para poder ver como se comporta frente a ciertos estímulos que podamos ejercer.
Bueno gente espero que les haya resultado interesante, y en la próxima entrega comenzaremos a trabajar sobre el Olly y sus funciones, éste ha sido un breve y relajado comienzo pero no se confien que ya tendrán que usar más adelante ese cerebro dentro de sus cabezas ;). Espero que les haya gustado.