Whew!!

Asi como lo ven vamos a darle con el curso de cracking, para esto unas aclaraciones

* En este tema domina la paciencia muchas veces son necesarios muchos saltos... luego veran

.... para llegar al objetivo
* No soy un crack soy tmb un novato, solo que les llevo unos 5 o 6 tutos de ventaja xD
* Algunos ejemplos los hare yo, otros los bajere de internet y ahi vere que onda
* Las clases de este taller seran vienes y lunes, dado qeu el fin todos tenemos mas tiempo y lunes para que sea la semana entera para hacer la practica* Se dejaran ejercicios haganlos y no publiquen el metodo para hacerlo hasta la fecha limite, salvo excepciones sera para la sig clase
Muy bien, por ahora veremos algo de teoria y algo practico, asi sera el esquema siempre

Ahora para empezar diremos que el cracking, seria el proceso inverso a programar a partir del exe deseamos llegar al codigo fuente con algun fin, el problema es que el codigo fuente sera en ensamblador para lo cual es necesario saber ciertas cuestiones.
Registros
AX Acumulador
BX Base
CX Contador
DX Datos
DS Segmento de datos
ES Segmento extra
SS Segmento de pila
CS Segmento de código
BP Apuntadores base
SI Indice fuente
DI Indice destino
SP Apuntador de la pila
IP Apuntador de siguiente instruccion
F BanderasLlamadas
Call y Ret. Call hace la llamada a un subproceso o subrutina, y se efectuan todas las operaciones con los registros de ese momento, no son nuevos. Todo se hace hasta que llega con un Ret digamos que ese es el tope para indicar el regreso xDComparaciones
Comp X,Y. Compara X con Y y afecta las banderasSaltos
JMP
JA (JNBE)
JAE (JNBE)
JB (JNAE)
JBE (JNA)
JE (JZ)
JNE (JNZ)
JG (JNLE)
JGE (JNL)
JL (JNGE)
JLE (JNG)
JC
JNC
JNO
JNP (JPO)
JNS
JO
JP (JPE)
JS
******* Sintaxis **********
----Instrucción JMP
Propósito: Salto incondicional
Sintaxis: JMP destino
Hace el salto sin importar nada
----Instrucción JA (JNBE)
Propósito: Brinco condicional
Sintaxis: JA Etiqueta
Después de una comparación este comando salta si está arriba o salta si no está abajo o si no es igual.
Esto significa que el salto se realiza solo si la bandera CF esta desactivada o si la bandera ZF esta desactivada (que alguna de las dos sea igual a cero).
----Instrucción JAE (JNB)
Propósito: salto condicional
Sintaxis: JAE etiqueta
Salta si está arriba o si es igual o salta si no está abajo.
El salto se efectúa si CF esta desactivada.
----Instrucción JB (JNAE)
Propósito: salto condicional
Sintaxis: JB etiqueta
Salta si está abajo o salta si no está arriba o si no es igual.
Se efectúa el salto si CF esta activada.
----Instrucción JBE (JNA)
Propósito: salto condicional
Sintaxis: JBE etiqueta
Salta si está abajo o si es igual o salta si no está arriba.
El salto se efectúa si CF está activado o si ZF está activado (que cualquiera sea igual a 1).
----Instrucción JE (JZ)
Propósito: salto condicional
Sintaxis: JE etiqueta
Salta si es igual o salta si es cero.
El salto se realiza si ZF está activada.
----Instrucción JNE (JNZ)
Propósito: salto condicional
Sintaxis: JNE etiqueta
Salta si no es igual o salta si no es cero.
El salto se efectúa si ZF está desactivada.
----Instrucción JG (JNLE)
Propósito: salto condicional, se toma en cuenta el signo.
Sintaxis: JG etiqueta
Salta si es más grande o salta si no es menor o igual.
El salto ocurre si ZF = 0 u OF = SF.
----Instrucción JGE (JNL)
Propósito: salto condicional, se toma en cuenta el signo.
Sintaxis: JGE etiqueta
Salta si es más grande o igual o salta si no es menor que.
El salto se realiza si SF = OF
----Instrucción JL (JNGE)
Propósito: salto condicional, se toma en cuenta el signo.
Sintaxis: JL etiqueta
Salta si es menor que o salta si no es mayor o igual.
El salto se efectúa si SF es diferente a OF.
---Instrucción JLE (JNG)
Propósito: salto condicional, se toma en cuenta el signo.
Sintaxis: JLE etiqueta
Salta si es menor o igual o salta si no es más grande.
El salto se realiza si ZF = 1 o si SF es diferente a OF
----Instrucción JC
Propósito: salto condicional, se toman en cuenta las banderas.
Sintaxis: JC etiqueta
Salta si hay acarreo.
El salto se realiza si CF = 1
----Instrucción JNC
Propósito: salto condicional, se toma en cuenta el estado de las banderas.
Sintaxis: JNC etiqueta
Salta si no hay acarreo.
El salto se efectúa si CF = 0.
----Instrucción JNO
Propósito: salto condicional, se toma en cuenta el estado de las banderas.
Sintaxis: JNO etiqueta
Salta si no hay desbordamiento.
El salto se efectúa si OF = 0.
----Instrucción JNP (JPO)
Propósito: salto condicional, toma en cuenta el estado de las banderas.
Sintaxis:JNP etiqueta
Salta si no hay paridad o salta si la paridad es non.
El salto ocurre si PF = 0.
----Instrucción JNS
Propósito: salto condicional, toma en cuenta el estado de las banderas.
Sintaxis: JNP etiqueta
Salta si el signo esta desactivado.
El salto se efectúa si SF = 0.
----Instrucción JO
Propósito: salto condicional, toma en cuenta el estado de las banderas.
Sintaxis: JO etiqueta
Salta si hay desbordamiento (overflow).
El salto se realiza si OF = 1.
----Instrucción JP (JPE)
Propósito: salto condicional, toma en cuenta el estado de las banderas.
Sintaxis: JP etiqueta
Salta si hay paridad o salta si la paridad es par.
El salto se efectúa si PF = 1.
----Instrucción JS
Propósito: salto condicional, toma en cuenta el estado de las banderas.
Sintaxis: JS etiqueta
Salta si el signo está prendido.
El salto se efectúa si SF = 1.
Tomado del tuto del Raton ;)Ok, bueno despues de esos apuntes deben bajar 2 cosas el PEiD
http://www.secretashell.com/codomain/peid/files/PEiD-0.94-20060510.zip y el Olly
http://ollydbg.de/odbg110.zip. Mientras bajan denle un repaso a lo de arriba en principal a los saltos. No se traumen aprendiendolos de memoria pero si un repaso cae bien

.
Ahora vamos con el primer CrackMe sera este
http://www.megaupload.com/?d=BETRGX80 . Es un esplendido soft que perimite abir y cerrar el lector del cd. Creado por Dark666 y ha vendido miles de copias xD.
Weno cuando lo queremos probar para abrir el CD vemos lo siguiente:

Muy bien, como no queremos pagar, debemos brincarnos eso, con lo cual abriremos el PEiD. El PEiD es un soft que nos muestra si la aplicacion tiene algun tipo de procteccion o si fue empaquetada y nos sirve para saber con que soft fue escrito. Lo abrimos y vemos
esto

Ahora debemos ir al Olly y al cargar el programa debemos dar click derecho en cualquier parte del codigo, seleccionar Seachr For... luego All Referenced text strings.

Ahi vamos a buscar el mensaje de error que nos salio, lo encontramos y damos doble click en el

Al dar click en el, nos lleva a la parte del codigo donde se aloja esa instrucion. Muy bien ahora vamos a buscar hacia arriba un salto condicional. En el codigo veran muchas instrucciones que aun no enseño, pero no son importantes por ahora. Por lo que si vamos hasta arriba hasta la direccion 00401F24 veremos un salto.... esta direccion esta muy arriba, por eso dije paciencia a la hora de buscar xD.... JE CrackMe1.0040202B , ok si no recuerdan que hace ese salto vean arriba xD

Ahora como ese salto es condicional, vamos a cambiarlo demos doble click en el y en lugar de JE ponemos su contrario JNE, quitamos lo de fill wiht NOP's y damos click en Assamble.

Ahora damos click derecho en la parte que modificamos, buscamos Copy to executable y de ahi selection.

Nos abre otra ventana click derecho donde modificamos y escogemos Backup y de ahi save to data file. Y lo guardamos con otro nombre para conservar el original y el ya crackeado.

Cerramos todo y nos dice si modifcamos el original, le decimos que no y ejectuamos el nuevo. Y listo funciiona bien.... aviso, dan latas las apis si sale mensaje de error es culpa del codigo fuente, se mejora en la version 2.0 xD , perdon por la molestia xD .....
Muy bien, espero que haya quedado claro, pues varias imagenes para hacerlo mas facil y espero que quede claro y sino a postear y entre todos a ayudarnos

. Ahora la tarea :\ es saltarse la proteccion para cerrar el CD. Saludos y suerte a todo el mundo.