CrackMe 1 by kaiser1313
Autor: kaiser1313
Nombre: CrackMe 1
Fecha: 30 de mayo de 2009
Tamaño: 715 KB
Compilador y/o Packer: Borland C++
Objetivos:Conseguir la clave correcta.
Dificultad: 1-2 (1-10).
Intentemos algo simple BP en la API:
MessageBoxA:
Una vez cargado el crackme, intentemos con un serial falso:
Vemos que la API es llamada desde: 00401AD6:
Si subimos un poco, notaremos el salto, por lo que la comprobación podría estar un poco más arriba:
Coloquemos BP en las CALL para saber si son esas las que verifican si el serial introducido es correcto o no:
Le damos RUN, e intentamos nuevamente con el mismo serial, una vez detenido se detiene en la primera call a la cual le pusimos un bp y si miramos en la PILA notaremos algo interesante:
Si introduzco la string que está arriba de mi serial falso, obtendremos el serial verdadero en este caso 1117 pero si abrimos nuevamente el crackme nos aparece que el serial es incorrecto, será algún RND?, pongamos un bp nuevamente en la call:
Notaremos que ha variado el serial correcto. por lo que intentaremos que cuando nos aparezca el mensaje de error nos muestre el serial correcto,dirijámonos al salto decisivo:
lleguemos hasta donde se comienza a pushear los valores para llamar a la API MessageBoxA (Mensaje de clave incorrecta):
estando detenido en 00401AC5, miremos el stack para ver si aun existe el serial correcto:
Intentemos modificar el PUSH del TITLE del MessageBoxA por un PUSH [esp-50](Debe ser en el Title y no en el Mensaje, debido a que después del OP code se coloca un NOP, lo que haría que no se pudiera llamar correctamente a la API sin hacer injerto):
Guardamos los cambios e introducimos un serial falso:
Notaremos que el serial correcto en esta ocasión es 390
Autor: kaiser1313
Nombre: CrackMe 1
Fecha: 30 de mayo de 2009
Tamaño: 715 KB
Compilador y/o Packer: Borland C++
Objetivos:Conseguir la clave correcta.
Dificultad: 1-2 (1-10).
Intentemos algo simple BP en la API:
MessageBoxA:
Una vez cargado el crackme, intentemos con un serial falso:
Vemos que la API es llamada desde: 00401AD6:
Si subimos un poco, notaremos el salto, por lo que la comprobación podría estar un poco más arriba:
Coloquemos BP en las CALL para saber si son esas las que verifican si el serial introducido es correcto o no:
Le damos RUN, e intentamos nuevamente con el mismo serial, una vez detenido se detiene en la primera call a la cual le pusimos un bp y si miramos en la PILA notaremos algo interesante:
Si introduzco la string que está arriba de mi serial falso, obtendremos el serial verdadero en este caso 1117 pero si abrimos nuevamente el crackme nos aparece que el serial es incorrecto, será algún RND?, pongamos un bp nuevamente en la call:
Notaremos que ha variado el serial correcto. por lo que intentaremos que cuando nos aparezca el mensaje de error nos muestre el serial correcto,dirijámonos al salto decisivo:
lleguemos hasta donde se comienza a pushear los valores para llamar a la API MessageBoxA (Mensaje de clave incorrecta):
estando detenido en 00401AC5, miremos el stack para ver si aun existe el serial correcto:
Intentemos modificar el PUSH del TITLE del MessageBoxA por un PUSH [esp-50](Debe ser en el Title y no en el Mensaje, debido a que después del OP code se coloca un NOP, lo que haría que no se pudiera llamar correctamente a la API sin hacer injerto):
Guardamos los cambios e introducimos un serial falso:
Notaremos que el serial correcto en esta ocasión es 390