Bueno mi idea es ir poniendo un crackme y su desarrollo por el momento comienzo por algo basico ...
SHNI Crackme by krackwar - You are not allowed to view links.
Register or
LoginVictima : SHNI Crackme
Proteccion : Serial o Password
Dificultad : Newbie
Herramientas : OllyDbg
Conocimientos : Encontrar una clave valida
Cracker : Bocvk
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
![](http://www.level-23.com/foro/images/smilies/wink.gif)
Saludos cordiales, Bocvk