No es que tenga preferencia por Joe, aunque me gusten sus crackmes como dije
en el anterior capitulo, pero de los muchos crackmes que he revisado creo que
este también tiene su interés para el curso pues toca el tema del registro de
Windows que era un tema que yo quería que se viera en el curso.
Vemos el crackme y el consejo de Joe

Hay un botón que dice reg number, lo pulso por curiosidad y me llama vago y
me ordena que lo crackee

Pasemos a analizar el crackme con DeDe

Analizo con Peid y me dice que esta en Delphi y sin comprimir/proteger
Lo cargo en DeDe
En procedures miro el TPrincipal
 
Me apunto esas dos direcciones que me interesan para lo que quiero mostraros
en este capitulo
Miro después el TRegist

Apunto esa dirección (46D838) después de mirar que corresponde al botón con el Caption
registrar
Voy a Olly y pongo BPs en las tres direcciones que apunte, las cuales
corresponden a tres botones

Vamos a cazar el serial
En Olly F9 introduzco mi nombre y numero habituales

Al pulsar el botón para en uno de los BP, el que corresponde al botón con el
Caption registrar

Voy bajando poco a poco con F8, al llegar a 46D873 veo que aparece mi nombre
en la ventana registers

Sigo bajando (F8) y poco después veo mi numero en la ventana registers

Justo debajo un CMP y un salto condicional, miro en el CMP y compara ebx con
eax

Voy a Olly a la command bar (plugin command bar) y escribo: ? valor de eax y
pulso Enter
A la derecha me aparece los valores hex. dec y ascii, veo que el valor
decimal corresponde a mi numero 15151515

Hago lo mismo con el valor de ebx y apunto el valor decimal que apareció
1858985

Pruebo a registrarme pues ya tengo un poco de experiencia y esto lo veo claro
Me pide reiniciar el crackme tened esto en cuenta a la hora de practicar con
programas comerciales (si es que lo hacéis)
Al reiniciar pulso en reg number y aparece el serial que encontré y vemos
arriba que el Caption del form (ventana) cambio de unregistered a registered
Crackme crackeado

El segundo botón
Aunque lo tenemos crackeado haremos caso a Joe y lo analizaremos un poco mas
Carguémoslo en Olly de nuevo
Habíamos puesto al principio 3 BPs y solo utilizamos uno, el necesario para
cazar el serial correcto, ahora veremos que hacen los otros dos.
Pulsamos el botón reg number y Olly para en el BP que pusimos en este botón

Bajamos con F8 y llegamos a este call 46D4C5 y
entremos en el con F7

Dentro del call seguimos con F8 hasta llegar a 42CA61 donde
vemos una llamada a la API RegOpenKeyExA

Miramos la ventana del Stack y vemos un par de frases que si alguna vez
accedimos al registro de Windows nos deberían ser familiares

HKEY_CURRENT_USER - Y debajo - Software\Crackme 6 Joe Cracker
Continuamos con F8 y observando la ventana registers y el Stack (esto
sobraría decirlo a esta alturas, pero bueno)
Vemos la frase Registration number
Ventana registers -> 
Vemos el número de registro bueno al llegar a 0046D4EC
Ventana registers -> 
En el Stack vemos también como van apareciendo poco a poco
<- Stack
Bueno a estas alturas si llevamos un tiempo con el PC y somos curiosos (si
sigues este curso una de dos: o eres curioso - que es para los que va
destinado este curso - o eres un guarreras que lo único que te interesa es
aprender esto para tener programas comerciales registrados por el morro y
enseñarle a tus amiguetes lo que sabes hacer sin importarte un pimiento lo
que pasa dentro de esa caja gris que compraste un día que hace ruiditos y
tiene lucecitas, yo una vez fui un guarreras, si, todos tenemos un pasado…
) como decía, si somos curiosos ya
habremos investigado y trasteado con el PC lo suficiente como para darnos
cuenta que este programa interactúa de alguna manera con el registro de
Windows.
Abramos el registro
Para los nuevos que no saben (y para los guarreras también, que yo no
discrimino a nadie) en el escritorio pulsamos Inicio – Ejecutar y escribís
regedit y aceptáis
Aparece el registro de Windows buscamos lo que habíamos visto en Olly
HKEY_CURRENT_USER\Software\Crackme 6 Joe Cracker

Pulsamos sobre el y vemos en la ventana de la derecha los valores de esa clave
del registro

y observamos que las strings que vimos en Olly están aquí también, partiendo
de lo cual deducimos que al introducir el numero de registro correcto el
crackme escribió estos valores en el registro con el objeto de acudir a el
cada vez que el crackme se ejecuta para tomar la información y ver si estamos
registrados o no
Cuidadin con lo que haremos a continuación
Tocar el registro de Windows puede ser perjudicial para la salud del PC si
no sabemos lo que estamos haciendo
Primero guardaremos una copia de la información del crackme,
lo haremos colocándonos sobre la carpeta y con botón derecho – Exportar
Le damos un nombre y lo guardamos yo le di el nombre crackme6joe.reg

Lo que vamos a hacer ahora es lo que puede trastocar el PC si no tenemos
cuidado o no sabemos lo que hacemos: vamos a eliminar esa clave y todos sus
valores
Si seguís estos pasos que yo os doy no tendréis problemas, pero aseguraros
bien de que lo hacéis bien antes de eliminar nada
Nos ponemos encima de la carpeta que nos interesa eliminar - de la
cual hicimos antes una copia exportándola – picamos y vemos que este
sombreada – aseguraros bien que solo se sombrea lo que queremos eliminar
-
Con click derecho – Eliminar o pulsamos la tecla Supr o Del y aceptamos.

Eliminada la clave cerramos el registro y ejecutamos el crackme, si pulsamos
reg number nos llama otra vez vagos ya que borramos la información del
registro y al buscarla el crackme al ejecutarse no la encontró y volvió al
estado de no registrado.

También observamos que si intentamos registrarnos con un serial cualquiera al
pulsar el botón registrar no aparece la ventana pidiéndonos que reiniciemos
el crackme, por tanto:
Si introducimos numero correcto – salta ventana de reinicio – escribe los
valores en el registro
Si introducimos numero incorrecto – no salta ventana de reinicio – no
escribe los valores en el registro
Prosigamos con el análisis
Abramos el archivo que exportamos del registro con la información del crackme
en mi caso lo llame crackme6joe.reg, lo podéis ver en la imagen superior
Lo abrimos con botón derecho editar

Comparadlo con la información del registro

Ahora lo cerramos, hacemos click izquierdo sobre el archivo crackme6joe.reg y
nos aparece esta ventana

Pulsamos Si para agregar esta información al registro
Ejecutamos el crackme y registrados otra vez

Vuelvo a repetir:
tened mucho cuidado al
manipular claves del registro si no os veis muy seguros dejad este crackme
para cuando estéis familiarizados con el registro y el sistema operativo
Ahora crearemos otro archivo de registro con los mismos valores pero
dejaremos el campo cap vacío
Como podéis ver en la imagen se crean con el bloc de notas y al guardar se
les da la extensión *.reg

Aquí podéis ver mis archivos: el que tiene los valores buenos
(crackme6joe.reg) y el que he creado dejando el campo “Cap” vacío
(crackme6joe2.reg)
Si ejecuto crackme6joe2.reg y añado al registro la información de este
archivo que he creado al ejecutar el crackme veo que falta el Caption de la
ventana, falta registered
Por lo demás el crackme sigue registrado, solo lo hice como ejemplo para que
vierais el resultado de manipular un valor en el registro.

El tercer botón
El tercero de los BPs que pusimos fue para que Olly parara al pulsar el botón

Por tanto corremos el crackme con F9 y pulsamos ese botón
Olly para aquí y podemos ver que en esta parte del código se llama a ejecutar
por medio de la orden ShellExecuteA al archivo regedit.exe

Si abrís la carpeta que esta en vuestro disco duro C llamada Windows entre
los ejecutables podéis ver uno llamado regedit.exe
Cuando se pulsa este botón hace lo mismo que hicimos manualmente cuando
fuimos a escritorio Inicio – Ejecutar y escribimos regedit y aceptamos
Joe lo incluyo por si alguno de nosotros novatos no teníamos idea de cómo
acceder al registro.
Continuemos haciéndole los honores al crackme de Joe
Las APIs
Si miramos las Cracker notes podemos ver esto (entre otras muchas cosas)
RegOpenKeyA / RegOpenKeyW
La función RegOpenKey abre la clave especificada
RegCreateKeyExA / RegCreateKeyExW
La función RegCreateKeyEx crea la clave especificada
Abriremos el crackme registrado en el Olly y le quitaremos todos los BP
que teníamos y pondremos BP en la llamada a la API RegOpenKeyA, la mas
parecida es RegOpenKeyExA hacemos Control + N para hacer
aparecer esta ventana y luego BP on every reference

Pulsamos F9 y después de parar y comprobar algunas claves del registro de
Borland Delphi (en mi caso lo hizo) para aquí, si recordáis ya pasamos antes
por esta zona cuando vimos que el crackme escribía en el registro

Seguimos con F8 y después de un rato llegamos aquí, vemos que ha terminado de
comprobar y va a mostrar una ventana (ShowWindow) que es la principal del
crackme como veis sombreado el caption es Crackme 6 registered

Comprobó nada mas arrancar el registro, vio que existía la clave y nos saca
la ventana principal con el cartelito registered.
Si volvemos a borrar la clave del registro parara en RegOpenKeyExA y
al seguir con F8 llegaremos al mismo sitio pero con una ligera variación:
Crackme 6 Unregistered

Pongamos un BP en RegCreateKeyExA corramos el crackme y nos
registramos con el numero bueno, al pulsar el botón parara en el BP pues al
detectar el numero bueno procede a escribirlo en el registro

<-Stack
Si miramos el Stack vemos la llamada a la creación de la clave del registro y
luego el programa nos pedirá que reiniciemos volviendo a hacer lo mismo,
pasara por RegOpenKeyExA y ahora al ver que estamos registrados evitara pasar
por RegCreateKeyExA y nos mostrara de nuevo como registrados
Bien aunque ahora sobre el papel parezca un poco lioso no lo es tanto, es un
ciclo que se repite y depende de si encuentra o no la clave en el registro de
Windows te da el resultado registrado / no registrado.
Que pasaría si cambiamos el valor del salto donde compara el numero de
registro nuestro con el bueno ¿?
Cambiémoslo como en la imagen e introduzcamos nuestro número malo

Hemos conseguido registrarnos con nuestro número con solo cambiar el valor
del salto.

Fin del capitulo
Podéis tener algún problema con este crackme o haceros un lío al crear y
eliminar las claves del registro, aseguraros de lo que hacéis, mirad bien
si la parte del capitulo donde estáis leyendo requiere que el programa este
registrado o no lo este y os evitareis liaros.
Lo mejor si te lías es dejarlo un rato y retomarlo cuando estemos
frescos desde el principio del
capitulo, siempre es bueno hacer esto, pero en este caso con mas motivo pues
podemos liarla al tocar el registro.
|