Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: colcrt en 17 Agosto 2015, 11:49 am



Título: [duda] resolviendo CRACKME DE CRUEHEAD 2
Publicado por: colcrt en 17 Agosto 2015, 11:49 am

Hola a tod@s

es que estaba viendo la solucion por que no lograba encontrar la clave viendo esta respuesta aclare varias cosas que no entendia pero tengo una gran duda como hace UNDER para saber que el valor que hay en 00402150 es exactamente 1F 2C 37 36 3B 3D 28 19 3D 26 1A 31 2D 3B 37 3E de antemano agradezco su gran ayuda  ;-) ;-)



Citar
Si vemos el crackme está empaquetado, si no me equivoco con UPX.
Lo desempaquetamos.

Ya desempaquetado buscamos referencias de string, encontrarás la de que el serial es correcto, lo que debes dirigirte a ella y subir hasta el push ahí si miras abajo OllyDBG mostrará de donde es llamado ese procedimiento encargado de mostrar el mensaje, te darás cuenta que viene por consecuencia de un salto condicional si te vas a el, verás un poco más arriba dos call que utilizan parámetros de la pila, si entras verás que lo primero que hace es tomar la pass y pasarla a mayúscula, luego de pasarla a mayúscula realiza un cifrado XOR del password ingresado junto con la string:
Messing_in_bytes

Mientras va cifrando el resultado va sobre escribiendo el password introducido:

0040217E

luego de esto lo compara con:

00402150  1F 2C 37 36 3B 3D 28 19 3D 26 1A 31 2D 3B 37 3E

Por lo que si el password cifrado con la string Messing_in_bytes no es igual a los bytes ubicados en 00402150, nos mostrará un mensaje de error.

Por suerte el cifrado XOR es bidireccional lo cual puede ser invertido sin ningún problema, debemos plantearnos la siguiente pregunta: ¿Que serial necesito introducir para que cuando se cifre con la string me de como resultado el serial ubicado en 00402150?.

Si Serial introducido XOR String (Messing_in_bytes) = contenido address 00402150 (serial correcto)

al ser bidireccional

Serial correcto (X)= String (Messing_in_bytes) XOR contenido address 00402150
 
Lo cual nos dará la siguiente tabla:

Código:

   
Código:
  M  e	s  s  i	 n  g  _  i  n	_  b  y  t  e  s
00402150  1F 2C 37 36 3B 3D 28 19 3D 26 1A 31 2D 3B 37 3E
          4D 65 73 73 69 6E 67 5F 69 6E 5F 62 79 74 65 73
XOR =     52 49 44 45 52 53 4F 46 54 48 45 53 54 4F 52 4D

HEX-ASCCI=R  I  D  E  R  S  O  F  T  H  E  S  T  O  R  M


Título: Re: [duda] resolviendo CRACKME DE CRUEHEAD 2
Publicado por: tincopasan en 18 Agosto 2015, 02:29 am
seguramente la mayoría que haya resuelto ese crackme ya no lo tienen (me incluyo), y no recuerdo nada, sería bueno que lo subas, asi se puede ver y es más fácil ayudarte. (lo busqué pero los links ya están caidos)


Título: Re: [duda] resolviendo CRACKME DE CRUEHEAD 2
Publicado por: Fixxed en 18 Agosto 2015, 04:22 am
Esa dirección viene de esta parte:

(https://i.gyazo.com/87be567a9b95b01bc4a079794e5dddf0.png)

Si la seguimos en el Dump:

(https://i.gyazo.com/dd4ebb471218e7b45ff3e92303be1a15.png)