Ayuda con crackme2 de cruhead

Iniciado por AleXxSnJR, 1 Agosto 2017, 23:16 PM

0 Miembros y 1 Visitante están viendo este tema.

AleXxSnJR

Hola estoy haciendo el curso de ollydbg de ricardo narvaja (aqui dejo el enlace por si le interesa a alguien) http://ricardonarvaja.info/WEB/INTRODUCCION%20AL%20CRACKING%20CON%20OLLYDBG%20DESDE%20CERO/

Pues resulta que en la parte 18 , hay que resolver el crackme 2 de cruhead , no se si alguno lo conocera, aunq da igual, hasta el momento he llegado a la conclusion de que
hay una instruccion DREPE CMPS BYTE PTR ES:[EDI],BYTE PTR S: que compara  este valor :
1F 2C 37 36 3B 3D 28 19 3D 26 1A 31 2D 3B 37 3E
con el resultado que da de hacer XOR bl ,cl donde bl es tu serial y cl es = 4D 65 73 73 69 6E 67 5F  69 6E 5F 62 79 74 65 73  ( Missing_in_bytes)
por lo que el serial correcto seria hacer 
XOR  x , 4D 65 73 73 69 6E 67 5F  69 6E 5F 62 79 74 65 73  = 1F 2C 37 36 3B 3D 28 19 3D 26 1A 31 2D 3B 37 3E
donde x es el serial correcto, pero la cosa es que no se muy bien como resolver esto
XOR  x , 4D 65 73 73 69 6E 67 5F  69 6E 5F 62 79 74 65 73  = 1F 2C 37 36 3B 3D 28 19 3D 26 1A 31 2D 3B 37 3E

Alguien puede ayudarme?
P.D = logicamente los valores a los que he hecho referencia en el codi¡go va moviendose de unos registros a otro pero lo he expresado con los valores de las direcciones de memoria donde apuntan los registros.

karmany

Hola.

Los dos crackmes de Cruehead fueron muy conocidos, me lo acabo de descargar y la última modificación es del ¡año 1998!, ¡han pasado años!

Es bastante sencillo de depurar porque no está comprimido, probablemente haya sido programado en MASM y a mi en Windows 10 con OllyDBG v2 me lo ha abierto sin ningún problema.

Lo he analizado y es muy instructivo para aprender. Veo que, efectivamente, como tú dices, toma tu serial, lo pone en mayúsculas y realiza un XOR byte a byte con los valores hex del texto "Messing_in_bytes" (4D 65 73 73 69 6E 67 5F  69 6E 5F 62 79 74 65 73) y ese resultado lo compara con un valores hex que están en memoria (1F 2C 37 36 3B 3D 28 19 3D 26 1A 31 2D 3B 37 3E).

Tú lo has identificado todo correctamente. Ahora solo queda cerrar el OllyDBG y trabajar con los valores hex.

Si te fijas, los dos valores hex tienen 16 bytes, eso me hace pensar que el serial válido pudiera tener 16 letras. La operación XOR es una operación que puede ser reversible. Por ejemplo XOR 12h, 34h = 26h, por lo tanto, XOR 26h, 34h = 12h y XOR 12h, 26h = 34h. Por este motivo, si hacemos XOR byte a byte "Messing_in_bytes", valor final tenemos lo siguiente:
4D 65 73 73 69 6E 67 5F 69 6E 5F 62 79 74 65 73
1F 2C 37 36 3B 3D 28 19 3D 26 1A 31 2D 3B 37 3E
-----------------------------------------------
52 49 44 45 52 53 4f 46 54 48 45 53 54 4f 52 4d


Por lo tanto, tanto en mayúsculas como en minúsculas, la contraseña sería pasar esos bytes a texto...
Un saludo.

AleXxSnJR

Muchas gracias, eso es justo lo que necesitaba , ademas lo has explicado muy bien, me ha quedado super claro.

Gracias  :laugh: