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