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.
|