Comenzamos con el crackme de hoy.
0 – Hacemos copia del crackme.
No creo que tenga que explicar esto, verdad ¿?
1 – Analizamos con un detector de protecciones.
Utilizaremos una nueva herramienta Peid (PE identifier).
Peid
Abrimos el Peid y en la ventana del programa pulsamos el botón con los tres
puntos (…) para buscar y cargar nuestro crackme como haríamos con cualquier
otro programa.
Tenemos el crackme cargado en el Peid y nos fijamos en la parte inferior justo
encima de la línea de botones y vemos que nos dice
Borland Delphi 4.0 – 5.0
Eso significa que esta escrito en Delphi y que no tiene ninguna protección.
Analizando
el crackme con Peid Vemos que esta escrito en Delphi
Como sabemos si tiene o no protección un programa ¿?
Mirad los siguientes ejemplos
Programa
protegido con ASPack
Programa
protegido con ASProtect
Programa
protegido con UPX
Se ve el nombre de la protección y el del creador de la misma, nada que ver
con los nombres de los lenguajes de programación (Delphi, C, C++, Visual
Basic, Visual C, etc).
Antes de cerrar el Peid pulsamos el botón Options y lo dejamos como en la
imagen siguiente y pulsamos save para guardar los cambios.
Peid
ventana de opciones
Lo que suelen hacer estos programas es comprimir o empacar el programa
empleando rutinas de protección.
Realmente cuando se ejecuta el programa lo primero que se ejecuta es la
rutina de descompresión pero es más sencillo de entender si lo imaginamos
como dije en la línea anterior.
No tiene que ver nada con la compresión Zip o Rar que hacen Winzip o Winrar.
Estas protecciones se verán en capítulos posteriores, quedaros de momento con
el manejo del Peid y la costumbre de analizar los crackmes antes de abrirlos
con el Olly.
2 – Nos quedamos con el lenguaje en que esta escrito el programa: Delphi (en
este caso).
3 – No esta protegido pues seguimos con el siguiente paso.
4 – Ejecutamos el programa.
Vemos que debemos introducir un serial y pulsar Registrar para registrarnos.
Pero escribir nuestro serial falso y pulsar Registrar no pasa nada, no sale
ninguna ventana con aviso de registrado o no registrado.
Este
programa esta defectuoso, me han engañado…
Por que pasa esto ¿?
Pues amigos porque no todas las protecciones te dan pistas tan claras para
encontrar el serial correcto como los crackmes facilones de los capítulos
anteriores.
Abrámoslo con Olly para investigar que esta pasando.
Buscaremos la única pista que tenemos: la cadena Registrar.
Buscamos las Strings en el Olly, pero esta vez como profesionales: nos
colocamos encima de la primera cadena y con el botón derecho del ratón Search
for text
Con
click derecho – Search text
Aparece otra ventana desmarcamos Case sensitive (esto es para que busque indistintamente
escribamos en mayúsculas o minúsculas) y escribimos la palabra (cadena) a
buscar.
Pulsamos OK.
Llegamos a un sitio que puede interesarnos vemos en dos líneas la palabra
Registrar.
Doble click sobre el primero Olly nos lleva a 004428C6 pero no
vemos ningún CALL ni CMP ni salto ni nada de lo que nos había servido para
crackmes anteriores.
Aquí
no hay pistas
Reflexionemos:
No vemos nada conocido, ni cadena diciendo registrado o crackme resuelto o
algo por el estilo.
No podemos rendirnos al principio del curso, usemos la intuición.
Intentaremos poner un Breakpoint en Registrar1 a ver que pasa, pues se supone
que el programa al llegar aquí debe parar.
Al pulsar F2 para poner el Breakpoint aparece este aviso que nos asusta.
Lagarto
¡! Lagarto!!
Traducción ratonil del mensaje de advertencia = como pongas el Breakpoint
aquí la puedes cagar.
Lo mismo nos pasa con la otra String
Otra
vez la misma advertencia
Como aun nos asusta un poco este tema del crackeo no ponemos Breakpoint en ninguna
de estas dos direcciones (aparte de que no conseguiremos nada).
Reflexión 2:
Que c#ñ# hacemos ahora ¿?
Recordamos una de las normas en las que hizo hincapié el ratón: 2 – Fijarnos
en que lenguaje esta escrito el programa.
Miramos la lista de herramientas y vemos un programa nuevo: DeDe Delphi
decompiler.
Nuestro crackme esta escrito en Delphi.
Conclusión: parece que deberíamos abrirlo con un programa especial para
Delphi.
DeDe
Abrimos DeDe.
Cargamos el crackme en DeDe pulsando en el botón que tiene dibujada la
carpeta
Una vez cargado pulsamos el botón Process y nos aparece la ventana del
crackme y otra ventanita que nos dice que presionemos aceptar cuando el
objetivo este cargado.
Como sabemos que el crackme esta cargado ¿? Pues cuando nos aparece la
primera ventana del crackme (como ahora) esperamos un par de segundos y
pulsamos Aceptar.
Cargando
el programa en DeDe
Empieza el DeDe a trabajar con nuestro crackme y cuando termina aparece este
aviso
DeDe
ha terminado de cargar el programa
Pulsamos OK y en las dos siguientes ventanas que aparecen pulsamos NO.
Pulsamos
no
Pulsamos
no otra vez
Una vez que cerramos las dos ventanas vemos la pantalla principal del DeDe
con el crackme destripado.
Pulsamos en Procedures y vemos esto
Ventana
Procedures
Registrar1Click es una de las Strings que encontramos en el Olly, nos
colocamos encima y click derecho - Show additional data
Y vemos una ventana con información interesante
En
esta imagen vemos información adicional de Registrar1Click
Caption = Registrar Caption es el nombre que vemos de algún componente del
programa (en este caso del crackme) esto nos indica que el Caption de este
componente es Registrar.
En nuestro crackme el componente que tiene el Caption Registrar es el botón
donde debemos pulsar para registrarnos.
Por tanto hemos encontrado el botón Registrar, el que pulsamos para hacer
aparecer la casilla donde introducir nuestro numero de serie.
Pero este no es el botón que nos interesa, tiene que haber otro cuyo Caption sea
Registrar, tenemos que buscarlo en el DeDe.
Fijaros en que no es igual el nombre del componente que el Caption del
componente.
Fokus parece un nombre sospechoso le diremos que nos muestre datos
adicionales
Te
pille ¡!
Efectivamente el caption de focusClick es Registrar
Nombre del componente = Fokus (TButton tipo botón)
Caption del componente Fokus = Registrar
Event = OnClick Algo (un evento) ocurre cuando se “clickea” este botón (el
botón Fokus cuyo Caption es Registrar)
Vemos al lado de FokusClick en el apartado RVA una dirección (00442AEC) la
apuntamos.
Esa dirección es donde se produce el evento OnClick, para entendernos donde
se “clickea” el botón Register.
Si vamos a esa dirección en el Olly y ponemos un Breakpoint el programa
parara cuando hagamos click sobre el botón Registrar.
Para aclarar un poco las cosas el botón Registrar1Click (tipo menú item)
corresponde a la palabra Registrar del menú superior del crackme.
El botón focusClick (tipo botón) corresponde a la palabra Registrar que aparece
debajo de la casilla donde debemos introducir el serial y su dirección es
00442AEC.
Cerramos DeDe, abrimos Olly y cargamos el ejecutable
Lo siguiente será ir a la dirección 00442AEC con Control
+ G con el fin de colocar un Breakpoint (BP) en esa dirección.
Con esto conseguiremos que Olly pare cuando pulsemos el botón registrar.
Arrancamos el programa con F9 introducimos nuestro numero y pulsamos
registrar, el Olly para en la dirección 00442AEC (color
rojo), mas abajo una zona con instrucciones conocidas (sombreado)
Olly paro cuando pulsamos el botón Registrar, antes de pulsarlo habíamos
introducido nuestro numero (yo sigo con mi 15151515), por tanto nuestro
numero debe de andar por algún sito para que el programa lo compare.
Vemos unas líneas más debajo de donde paro Olly unas instrucciones conocidas
Call Cmp Je.
Bajemos con F8 hasta la dirección 00442B2F y una vez
encima de ella pulsemos F7 para entrar a examinar el Call (aunque vemos ya
algo que nos gusta en la ventana registers del Olly).
Je
je
Dentro del Call confirmamos la sospecha
Dentro del Call nos movemos con F8 hasta ver esto
Probamos con el serial 3483A003RATON y…
Lo de siempre: intentadlo sin mirar tutorial
|