Resolviendo Crackmes [Bocvk]

Iniciado por ANTRAX, Febrero 20, 2010, 02:29:25 AM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Bueno mi idea es ir poniendo un crackme y su desarrollo por el momento comienzo por algo basico ...

SHNI Crackme by krackwar - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Victima :  SHNI Crackme
Proteccion :  Serial o Password
Dificultad :  Newbie
Herramientas :  OllyDbg
Conocimientos :    Encontrar una clave valida
Cracker :   Bocvk
Fecha :    02/10/2008 (Mi cumple xD)


Me voy directo al grano ya que el nivel como lo dijo el creador es basico ,para los que quieren lo analizan en que esta hecho, para los que no les aviso que esta hecho en FASM, comencemos:


Cargamos el crackme con el OllyDbg...
Presionamos CTRL+N , y nos aparecen las API que se utilizaron para programar el crackme , buscamos alguna sospechosa en este caso la mas común GetDlgItemText que sirve para extraer el texto que ingresamos y almacenarlo en algun lado , entonces le ponemos un BreakPoint ah? :


Ahora F9 (Run), ingresamos los datos le damos click en el boton, y paro en el breakpoint ahora vamos a ver que pasa:

- Aqui la api extrae lo que ingresamos en mi caso ingrese "bocvk", luego lo mueve a eax.

00402089  |.  FF15 B0304000 call    dword ptr [<&USER32.GetDlgItemTe>; \GetDlgItemTextA
0040208F  |.  B8 00104000   mov     eax, 00401000   

- Compara si el primer character es 73h (que es la letra "s" en decimal), sino es nos manda al chico malo (Mensaje que vota manda el crackme si la clave no es correcta).

00402094  |.  8038 73       cmp     byte ptr [eax], 73
00402097  |.  75 42         jnz     short 004020DB

- Antes estaba en la posicion uno osea el primer character ahora le suma tres y se pasa al tercer character , y luego lo compara con 69h (que es la letra "i" en decimal) , sino es nos manda al chico malo

00402099  |.  83C0 02       add     eax, 2
0040209C  |.  8038 69       cmp     byte ptr [eax], 69
0040209F  |.  75 3A         jnz     short 004020DB

- Ahora lo mismo que antes , en este caso sumamos dos a la posicion y quedamos en el character que tiene la posición 5 , lo compara con 6Dh (que es la letra "m" en decimal) sino es pues ya saben lo que pasa :

004020A1  |.  83C0 02       add     eax, 2
004020A4  |.  8038 6D       cmp     byte ptr [eax], 6D
004020A7  |.  75 32         jnz     short 004020DB

- Lo mismo que antes, en este caso sumamos dos a la posicion y quedamos en el character que tiene la posicion 7, lo compara con 6Fh (que es la letra "o" en decimal) sino es pues ya saben lo que pasa

004020A9  |.  83C0 02       add     eax, 2
004020AC  |.  8038 6F       cmp     byte ptr [eax], 6F
004020AF  |.  75 2A         jnz     short 004020DB

- Sigue lo mismo que antes  0= , en este caso sumamos dos a la posicion y quedamos en el character que tiene la posicion 9 , lo compara con 6Eh (que es la letra "n" en decimal) sino es pues ya saben lo que pasa



004020B1  |.  83C0 02       add     eax, 2
004020B4  |.  8038 6E       cmp     byte ptr [eax], 6E
004020B7  |.  75 22         jnz     short 004020DB




-   Si todo va bien llegamos aca y podemos decir crackme resuelto
-   Entonces la clave es asi s*i*m*o*n    ( * -> es cualquier caracter no importa cual sea el crackme no los toma ) .

004020B9  |.  6A 00         push    0                                ; /Style = MB_OK|MB_APPLMODAL
004020BB  |.  68 29114000   push    00401129                         ; |Title = "Felicitaciones as pasado el crackme"
004020C0  |.  68 29114000   push    00401129                         ; |Text = "Felicitaciones as pasado el crackme"
004020C5  |.  6A 00         push    0                                ; |hOwner = NULL
004020C7  |.  FF15 AC304000 call    dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA

Espero que les haya servido aunque esto es basico pero a veces sirve para comenzar  ;)
Saludos cordiales