x-LOCKS Crackme | C++ | Facil

En esta ocasion resolvere un crackme que tenia en el disco duro desde hace unos meses, es especial ya que no debemos parchear un serial o combinacion de nombre + contraseña, si no que debemos hacer que cambie la informacion del textbox que nos dice unregistered a registered, qui estan las instrucciones que nos enseña el crackme.

1

Eso lo muestra en el boton “about/rules”, si pulsamos OK simplemente se cierra, asique de entrada no tenemos referencias sobre la zona que buscamos.

Vamos a abrirlo en el ollydbg y nos fijamos que esta comentado el codigo, esto nos facilita mucho las cosas

Esta zona nos interesa

0040109D . 68 33344000 PUSH X-LOCK~1.00403433 ; ASCII “Here starts the test for the registration”
004010A2 . 8D05 10304000 LEA EAX,DWORD PTR DS:[403010]
004010A8 . 3D 12304000 CMP EAX,X-LOCK~1.00403012
004010AD . 74 0A JE SHORT X-LOCK~1.004010B9
004010AF . C705 0C304000 >MOV DWORD PTR DS:[40300C],0
004010B9 > 68 5D344000 PUSH X-LOCK~1.0040345D ; ASCII “Here ends the test for the registration”

Nos dice que ahi esta el test de registro y vemos que en 004010AD tenemos un salto condicional de si es equivalente… Vamos a cambiarlo por un JNE.

Otra zona que nos interesa es esta ya que vemos en la zona ASCII que si pasamos por 004010F6 nos deberia cambiar el texto a “fullversion”. Como tiene un salto condicional tipo JNE (JNZ) que hace que nos lo pasemos le cambiaremos la direccion del salto a 004010F6

004010EE . 75 15 JNZ SHORT X-LOCK~1.00401105
004010F0 . 8D05 35304000 LEA EAX,DWORD PTR DS:[403035]
004010F6 . 50 PUSH EAX ; /Text => “Fullversion”
004010F7 . FF35 4C304000 PUSH DWORD PTR DS:[40304C] ; |hWnd = NULL
004010FD . 8D05 C8114000 LEA EAX,DWORD PTR DS:[4011C8] ; |
00401103 . FFD0 CALL EAX ; \SetWindowTextA
00401105 > A1 0C304000 MOV EAX,DWORD PTR DS:[40300C]

Asi deberia quedar:

004010EE 75 06 JNZ SHORT X-LOCK~1.004010F6

Sigue el codigo y nos encontramos con otro salto JNE

0040110D . 75 15 JNZ SHORT X-LOCK~1.00401124
0040110F . 8D05 41304000 LEA EAX,DWORD PTR DS:[403041]
00401115 . 50 PUSH EAX ; /Text => “Registered”
00401116 . FF35 50304000 PUSH DWORD PTR DS:[403050] ; |hWnd = NULL
0040111C . 8D05 C8114000 LEA EAX,DWORD PTR DS:[4011C8] ; |
00401122 . FFD0 CALL EAX ; \SetWindowTextA

0040110D . 75 15 JNZ SHORT X-LOCK~1.00401124 Esta linea nos dice que si no es equivalente se salte a 00401124 y no cambie el valor de la caja de texto de Unregistered A registered, y nosotros queremos que precisamente  haga eso, asi que redireccionamos el salto a 00401115

Seguimos bajando y nos encontramos las siguientes lineas

00401124 > EB 78 JMP SHORT X-LOCK~1.0040119E
00401126 > 837D 0C 10 CMP DWORD PTR SS:[EBP+C],10
0040112A . 75 07 JNZ SHORT X-LOCK~1.00401133
0040112C . E8 2A000000 CALL X-LOCK~1.0040115B
00401131 . EB 6B JMP SHORT X-LOCK~1.0040119E
00401133 > 837D 10 65 CMP DWORD PTR SS:[EBP+10],65
00401137 . 75 1C JNZ SHORT X-LOCK~1.00401155
00401139 . 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
0040113B . 8D05 19304000 LEA EAX,DWORD PTR DS:[403019] ; |
00401141 . 50 PUSH EAX ; |Title => “X-Locks crackme for newbies”
00401142 . 8D05 54304000 LEA EAX,DWORD PTR DS:[403054] ; |
00401148 . 50 PUSH EAX ; |Text => “Lockless presents:
X-Locks crackme for newbies

Welcome to my first crackme! 🙂
There are 3 ways to make this prog to fullversion,
and there are 3 ways to register this program!
If you’re a good cracker, try to crack the 2nd che”…
00401149 . 6A 00 PUSH 0 ; |hOwner = NULL
0040114B . 8D05 BC114000 LEA EAX,DWORD PTR DS:[4011BC] ; |
00401151 . FFD0 CALL EAX ; \MessageBoxA
00401153 . EB 49 JMP SHORT X-LOCK~1.0040119E

00401124 > EB 78 JMP SHORT X-LOCK~1.0040119E esta linea nos manda directos al final del codigo, necesitamos redireccionar ese salto, lo haremos a la direccion 0040117A que es la zona donde nos interesa ir

0040117A |. 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
0040117C |. 8D05 0B334000 LEA EAX,DWORD PTR DS:[40330B] ; |
00401182 |. 50 PUSH EAX ; |Title => “Congratulations!”
00401183 |. 8D05 1C334000 LEA EAX,DWORD PTR DS:[40331C] ; |
00401189 |. 50 PUSH EAX ; |Text => “You’ve cracked my 1st crackme!! 😉

Mail me your cracked .exe, a tut is welcome!
I think you’re able to crack my 2nd crackme
when I release it, and: It’ll be harder to crack!”
0040118A |. 6A 00 PUSH 0 ; |hOwner = NULL
0040118C |. 8D05 BC114000 LEA EAX,DWORD PTR DS:[4011BC] ; |
00401192 |. FFD0 CALL EAX ; \MessageBoxA

Debe quedarnos asi en el ollydbg

2

Guardamos el nuevo binario y comprobamos

3

Nos muestra este mensaje al abrirlo, pero porque no nos sale la ventana de antes poniendo Registered y Fullversion si lo hemos parcheado para que asi sea? Facil, el motivo es el ultimo salto que hemos hecho, si no hubieramos tocado esa linea nos mostrarioa la ventana pero el crackme estaria incompleto porque el autor nos pide las tres cosas.

4

Ahi esta

descarga

Eso es todo.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s