• Crackmes

 #243601  por CronuX
 09 Nov 2010, 02:53
Buenas caballeros,
he creado un pequeño crackme para que se entretengan durante un ratillo.
Está programado en MASM32 y no tiene trucos antidebugger.
La misión, como de costumbre, es crear el keygen. Como creo que es muy sencillo inténtenlo sin programar un bruteforce.

rapidshare -> [ Debe registrarse para ver este enlace ] ... rackme.zip
megaupload -> [ Debe registrarse para ver este enlace ]

Saludos.
PeterPunk
Sin el permiso del amigo PeterPunk posteo este Crackme, por que me ha parecido muy interesante, me ha llamado la atencion la forma tan peculiar de seguridad en la rutina y que para mi es ya con un poco de dificultad para dejar un poco los sencillos con password e intentar algo que contenga mas, que requiera mas pensamiento, que deje mas enseñanza, y tambien para que muchos lo intenten, de todas formas yo ya lo resolvi, asi que si llegado el caso tienen una duda con gusto les podria colaborar pero no dire respuesta, ya que lo que busco es que intenten y aprendan... saludos...

Les voy a dejar una gran pista y es una imagen a ver si les ayuda...

Imagen

Feliz Cracking
CronuX
 #244049  por linkgl
 10 Nov 2010, 19:47
Pff que tenga un grado de dificultad para tí ya me desanima haha, estuve intentando por todas partes y no no di con el algoritmo x_x aun me falta mucho por incursionar en asm
 #245233  por CronuX
 15 Nov 2010, 22:11
Nada de eso, hablar de dificultar es algo muy relativo, y depende de muchisimos factores, y la verdad no esta muy dificil y asi lo dejaron lo pudieron haber complicado mas pero mas que todo hay que sacarle ingenio, pensar y ser muy objetivo con lo que se esta viendo y se necesita, y cuando lo veas veras uff que facil era...
saludos y sigue intentando, la perseverancia alcanza la meta...
 #245305  por linkgl
 16 Nov 2010, 03:01
Pues ya ando mirando mas detenidamente primero intentare usar ing inversa que es lo mas fácil pero aun asi se me complica saco la parte donde toma los valores que esta en 4010E2 Después entra en un bucle y divide ECX pero hay algo que no estoy viendo bien seguiré mirando bro mas detenidamente creo que estoy avanzando...

--edito

Salgo de un bucle y entro a otro, vuelvo a salir y vuelvo a entrar a otro haha son como 3 parece seguiré mirando aver que sale xD
 #245390  por PeterPunk
 16 Nov 2010, 11:28
De el segundo bucle:
Código: Seleccionar todo
004011BC     |.  8B3D C2394000                 MOV EDI,[4039C2]
004011C2     |.  BE 9B304000                   MOV ESI,0040309B
004011C7     |.  33C9                          XOR ECX,ECX
004011C9     |>  8B06                          /MOV EAX,[ESI]
004011CB     |.  8907                          |MOV [EDI],EAX
004011CD     |.  83C6 04                       |ADD ESI,4
004011D0     |.  83C7 04                       |ADD EDI,4
004011D3     |.  41                            |INC ECX
004011D4     |.  83F9 13                       |CMP ECX,13
004011D7     |.^ 72 F0                         \JB SHORT 004011C9
004011D9     |.  66:8B06                       MOV AX,[ESI]
004011DC     |.  66:8907                       MOV [EDI],AX
004011DF     |.  8A46 02                       MOV AL,[ESI+2]
004011E2     |.  8847 02                       MOV [EDI+2],AL
no te tienes que preocupar, simplemente copia unos datos de un sitio a otro en el ejecutable.
El tercer bucle es realmente el importante. Sólo son 5 líneas (contando el salto al inicio del bucle), así que no te debería costar entenderlo. Cuando lo comprendas podrás resolver el crackme aunque sea por fuerza bruta.
El primer bucle símplemente es para controlar el formato del serial.

Saludos.
 #245762  por linkgl
 18 Nov 2010, 17:25
Mmmm seguí mirando, pero en el bucle (el tercero) que hace la funcion ROL ?? esa me parece que no la conozco eh estado googleando pero me encuentro con muy poca información al respecto. :S
 #245799  por PeterPunk
 18 Nov 2010, 19:48
[ Debe registrarse para ver este enlace ]: rota hacia la izquierda el número de bits indicado en el registro que queramos.
Ejemplo:
en eax tenemos el valor 0x1A2B3C4D y tenemos
rol eax, 1
pues si movemos todos sus bits una posición a la izquierda (y el que está a la izquierda de todo pasa a la derecha) obtendremos 0x3456789A.
Ahora imaginemos que tenemos eax = 0xEDEADBAB y le hacemos un
rol eax, 4
pues con esto obtendremos 0xDEADBABE
Como puede que así no lo veas, imagínatelo en binario:
0xEDEADBAB = 11101101111010101101101110101011b
le quitas los primeros 4 bits y los pones al final:
11011110101011011011101010111110b = 0xDEADBABE

Saludos.
 #245911  por linkgl
 19 Nov 2010, 05:56
ya veo bro gracias seguiré mirando aunque este crackme aun es avanzado para mi nivel en cracking cuando lo resuelva se los restregaré en la cara no lo dejaré abandonado xDD