PROGRAMA

      

PROTECCION

     

HERRAMIENTAS

TIME TRIAL DETTEN

DESCARGA

 

Sin protecci�n

 

Olly Debugger

Patch FX

 

 

 

 

 

     NIVEL: Cavern�cola

 

 



Aprender el manejo b�sico de herramientas nuevas: Patch FX
Evitar que un programa caduque por l�mite de tiempo.
Crear un parche o crack para ese programa



Este crackme emula la protecci�n de esos programas trial que pasado un cierto n�mero de d�as caduca y nos quedamos sin poder usar (a no ser que nos interese y lo compremos).

Hacemos copia del crackme y del archivo DATA.DET. Muy importante hacer esto en este capitulo
Analizamos con Peid y vemos que no esta protegido.
Ejecutamos el crackme y vemos esta ventana que nos dice que nos quedan 3 d�as u ocho usos o ejecuciones del programa.



Si ejecutamos 8 veces el programa aparece un cartel avisando de que pas� el periodo de evaluaci�n, si adelantamos el reloj del sistema unos d�as aparece el mismo cartel.



Lo cargamos en Olly y a buscar la String mala con las strings references, la encontramos en la direcci�n
0040114D
Dos l�neas mas arriba esta el principio de la instrucci�n (marcado con >) en la direcci�n
00401146
Pulsamos Control + R estando encima de la direcci�n
00401146 para ver desde donde se llama para que aparezca el cartel malo (sorry this crackme�) Y vemos que hay tres saltos condicionales que nos llevan hasta la zona mala.


Vemos los saltos que hacen aparecer el cartel Sorry� (marcados en rojo) Para ello sobre la direcci�n 00401146 (marcada en gris) pulsamos Control + R

Los tres saltos nos env�an a
00401146
Para crackear este programa usaremos un poco de intuici�n o imaginaci�n.

El objetivo es evitar que los saltos nos env�en a la zona mala.

Primero vamos a evitar que cuando lo usemos m�s de 8 veces aparezca el cartel.
Cerramos Olly.
Ejecutamos el programa 9 veces hasta que salga el cartel de tiempo expirado.
Abrimos Olly, lo cargamos y ponemos un Breakpoint (F2) en cada uno de los saltos para ver cual es el que nos hace saltar a la zona mala cuando el programa rebasa el l�mite de ejecuciones.
Run o F9 y el programa arranca e inmediatamente para en el primer Breakpoint que pusimos


Primera parada de Olly vemos que no toma el salto

Observamos lo que nos dice Olly en la parte inferior de la ventana de ensamblado Jump is not taken = no hace el salto, por tanto no nos lleva a la zona mala, por tanto ese no es el salto que debemos alterar para evitar el limite de ejecuciones del programa.
Pulsamos F9 otra vez (una sola vez) para continuar corriendo el programa e inmediatamente para en nuestro segundo Breakpoint


Segunda parada de Olly vemos que tampoco toma el salto

Lo analizamos y vemos que tampoco toma el salto, este salto tampoco se encarga del l�mite de ejecuciones
Pulsamos F9 otra vez (una sola vez) para continuar corriendo el programa e inmediatamente para en nuestro tercer Breakpoint


El salto si se cumple desde aqu�, este es el salto del l�mite de ejecuciones

Aqu� la cosa cambia vemos que el salto si es realizado al llegar a esta instrucci�n nos dice Jump is taken as� que si alteramos ese salto evitaremos ir a la zona mala, a la zona en la que se llama a la MessageBox con la frase Sorry this crackme has expired.

Encima del salto vemos CMP Al, 0 compara Al con cero y si es igual salta, intuimos que en Al se va registrando el numero de veces que se ejecuta el programa y cuando llega a cero se cumple la condici�n que pide el salto para ejecutarse.

Tenemos que intuir e imaginar cuando no sabemos, por eso es interesante ir viendo poco a poco el ensamblador (yo el primero) para ir sabiendo realmente por que hacemos las cosas, aunque de momento nos baste con estas pocas instrucciones.


El resultado: si se ejecuta el salto vamos directos a la zona mala

Veremos donde nos lleva la imaginaci�n en este caso
Cambiaremos el salto de la siguiente manera
Doble Click sobre la instrucci�n que vamos a cambiar
004010EB

Cambiamos
JE SHORT 00401146 por JMP SHORT 004010FB para que salte siempre a 004010FB, para esto pulsaremos doble clic izquierdo encima de la direcci�n 004010EB


Por que dirigimos el salto all� y no a otro lugar �?

Tenemos que evitar el salto y que el programa siga ejecut�ndose, podr�a haber hecho que saltara a la siguiente instrucci�n dentro del c�digo (
004010ED) pero es un DEC una operaci�n de decremento, dos l�neas mas abajo hay un XOR, otra operaci�n (Mirad las Cracker notas, por ejemplo el apartado crackear limites de runtime, aunque deber�ais leerlas completas), prefiero por instinto evitarlas y me voy al sitio que me parece mejor para ubicar el destino del salto: 004010FB un PUSH lo hago por que se parece bastante a un principio de instrucci�n y evito las operaciones anteriores y espero que el programa se desarrolle normalmente pese a saltarme esas operaciones.
Cambio como digo
JE SHORT 00401146 por JMP SHORT 004010FB para que salte siempre a 004010FB y pulso F9 a ver que pasa


Aqu� vemos la direcci�n cambiada y el resultado

Pues parece que acert� ya no sale el cartel malo y el programa se ejecuta normalmente aunque queden 0 Sessions o ejecuciones del programa.
Esto se llama buscarse la vida.
Hacemos los cambios en el ejecutable con Copy to executable � Selection.

Ahora toca evitar que caduque pasados tres d�as

Cerramos Olly y avanzamos unos d�as el reloj del sistema, abrimos Olly volvemos a abrir el ejecutable (ahora retocado)
Nos quedan dos saltos por analizar de los tres que nos llevaban a la zona mala, pongamos Breakpoints en ellos y corramos Olly con F9
Para en el primero y observamos que al haber transcurrido m�s de 3 d�as el primero de los saltos cumple la condici�n y nos env�a a la zona mala
Si lo cambiamos evitaremos que el programa caduque a los tres d�as.


Vemos que ahora el primer salto cumple la condici�n Para evitar el limite de d�as debemos cambiarlo

Como antes nos dio resultado cambiaremos el destino de este salto al mismo lugar del c�digo que cambiamos el salto anterior.
mirad la imagen que sigue a estas l�neas
Despu�s de cambiarlo pulsamos F9 y ya no sale el cartel, nos quedan siempre 3 d�as y 8 ejecuciones seg�n el cartelito pero realmente tanto las ejecuciones como los d�as son ilimitados


Cambiamos el destino de los saltos

Guardamos los cambios con Copy to executable Selection y ahora le damos un nombre distinto al del ejecutable para identificarlo como parcheado como por ejemplo: timetrial_con_saltos_cambiados.exe.

Lo hicimos.

Antes de seguir fij�monos en una cosa: este crackme viene acompa�ado de otro archivo llamado DATA.DET del cual dije que hici�ramos copia al principio del capitulo.

Abramos el DATA.DET que esta en la carpeta del crackme con el que hemos estado trabajando para ver que contiene, lo abrimos con el bloc de notas, en mi caso veo esta l�nea.



Abramos el DATA.DET que esta en la carpeta del crackme original (la copia que siempre nos reservamos) con el que no hemos trabajado para ver que contiene, lo abrimos con el bloc de notas, vemos esta l�nea parece que no hay nada pero fijaros hay espacios y un
`



Si despu�s de pasado el periodo de prueba hubi�ramos sustituido el archivo DATA.DET que ten�amos en la carpeta del crackme por la copia original habr�amos vuelto a tener el programa con otros tres d�as u ocho ejecuciones.
Probadlo si quer�is.
Este apunte es para que teng�is en cuenta que algunos programas pueden necesitar de otros archivos a la hora de comprobar vuestro registro.
Lo veremos en siguientes cap�tulos.


Patch FX

Tenemos ahora dos ejecutables, el original: timetrial.exe y la copia con los saltos cambiados:
timetrial_con_saltos_cambiados.exe (crackeada)
Vamos a ver una forma f�cil de hacer un crack como los que algunos piratones hacen para programas comerciales (nosotros somos buena gente y nunca haremos esto).

Abrimos Patch FX


Patch FX ventana principal

En la ventana principal (Required information) pulsamos original file y cargamos el crackme original timetrial.exe


Cargando el original

En la ventana principal pulsamos Cracked file y cargamos el crackeado por nosotros timetrial_con_saltos_cambiados.exe


Cargando el parcheado

Le ponemos nombre a la ventana del crackme (Windows title) y una peque�a descripci�n


Detalle de la ventana decription

Pasamos a la ventana Optional information y en Patch filename ponemos el nombre que queremos darle a nuestro crack y si queremos un icono y una imagen (debe de tener unas medidas, el mismo programa os informa de ello), tambi�n se puede incluir un readme.txt
Para ver el resultado del este ejercicio nos bastar�a con rellenar solo la Required information.


Creamos el parche (crack) a nuestro gusto

Cuando este a nuestro gusto pulsamos el bot�n Generate EXE y aparece este cartel que aceptaremos pulsando SI


El momento de creaci�n del crack o parche

Patch FX ha creado el crack y lo ha guardado en la carpeta donde teng�is el programa Patch FX
Lo buscamos, lo copiamos a la carpeta donde tenemos nuestros crackmes y ejecutamos timetrial.exe


El d�a de hoy primera ejecuci�n del programa

A DIA de hoy funciona, pero si cerramos el programa y adelantamos un mes el reloj cuando lo volvemos a ejecutar aparece el cartel malo


Viaje en el tiempo

Cerramos el programa y ejecutamos el crack Timetrial_crack.exe (es el nombre que yo le di al crearlo con patch FX, pod�is ver que tiene el icono que le indique al programa y en la ventana aparece el nombre y la foto que escog� al crearlo con Patch FX) lo aplicamos sobre el timetrial.exe original



OK OK OK

Nos dice que todo OK, comprob�moslo, pulsamos Quit para cerrar nuestro crack y abrimos el ejecutable original timetrial.exe
Mirad la fecha del reloj lo hemos parcheado con �xito, hemos creado nuestro primer crack.


Programa crackeado con �xito utilizando nuestro propio parche

Miramos al cielo y damos las gracias al creador de este programa al menos 10 veces (opcional)

Explicaci�n ratonil del funcionamiento de Patch FX:
Este programa funciona haciendo una comparaci�n entre los ejecutables, el original y el parcheado �ve� los bytes alterados y �se lo monta�
para hacernos un programita que cuando lo ejecutemos cambie esos bytes en el programa original.
Advert� que la explicaci�n era ratonil.
Dentro de vosotros el lado oscuro a revelarse empieza, tranquilidad j�venes padawans.

Un problema que pod�is tener en este capitulo puede ser confusi�n con el nombre del crackme original y el parcheado o el cambio de fecha al jugar con el reloj.

Bueno, fin del capitulo cuarto.

Hemos analizado un nuevo tipo de protecci�n y hemos aprendido a hacer un crack para poder aplicarlo a nuestros programas.
Esto a los programadores les viene muy bien para actualizar las versiones de sus programas sin necesidad de tener que distribuir el programa completo.
La co�a de siempre: practicadlo sin el tutorial.
Leed los documentos de apoyo adjuntos al curso, os ayudaran a comprender mejor el tema.

Capitulo siguiente

                                                                                                 


Febrero 2004

Pagina oficial del curso

 

Gracias a ...