Ayuda con un Crackme

Iniciado por w0nt0n, 18 Julio 2010, 14:10 PM

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

w0nt0n

Buenas,

Estoy jugando un poco con unos crackmes y estoy con uno que no sé resolver. Me explico:

Llego a la rutina que calcula el serial y es como sigue:

004013C0  /$ 60             PUSHAD
004013C1  |. C1C0 02          ROL EAX,2
004013C4  |. A3 6D314000   MOV DWORD PTR DS:[40316D],EAX
004013C9  |. 05 79740000    ADD EAX,7479
004013CE  |. 35 33323100    XOR EAX,313233
004013D3  |. C1E0 06         SHL EAX,6
004013D6  |. A3 72314000    MOV DWORD PTR DS:[403172],EAX
004013DB  |. 61             POPAD


Hasta donde entiendo, lo que hace es (en decimal):

Multiplico por 4 (en realidad se añaden al final del número en binario dos ceros lo que es lo mismo que multiplicar por 4)
Le sumo 29.817
Hago un XOR con 3.224.115
Multiplico por 64 (técnicamente no es esto pero el resultado que obtengo es el mismo, no?)

Cuando acaba la rutina, lo compara con 3.272.071.856 y en función de eso decide si es válido o no. Por lo que entiendo, la solución a este problema es:

x = {XOR [(3.272.071.856/64) , 3.224.115] - 29.817}/4

El resultado que obtengo de esto es 13.577.784 (o 13.577.783 si hago las operaciones en hexadecimal). En cualquier caso cuando introduzco el serial, el resultado después de las operaciones el 3.272.071.691.

Haciendo todas las operaciones en hexadecimal el número con el que se compara es el C307DA80 y el que obtengo usando mi serial C307DA0B, siendo la diferencia entre estos dos números en hexadecimal de 75 (117 en decimal), que es distinto de la diferencia si hago todos los cálculos en decimal.

No tengo muy claro el porqué de esto y quería saber si alguien me lo podría explicar.

Un saludo
No quisiera parecer marica, pero los unicornios son una *****.

MCKSys Argentina

No confundas ROL con SHL.

La multiplicacion es la emulación (?) de SHL. Pero ROL ROTA los bytes, osea, los bytes que "salen" por la izquierda se van agregando por la derecha.

Al menos, me parece que ese es el error... :P

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Иōҳ

Cierto lo que dice MCKSys

ROL hace un desplazamiento de manera logica, y como dice "Los que se salen por la izquierda", entran por la derecha.

y sobre SHL y su contrapartida ellos hacen un desplazamiento de manera aritmetica, en particular SHL hace lo mismo que ROL con la diferencia que los bytes "que salen por la izquierda, se pierden", y no entran por la derecha como en ROL
Eres adicto a la Ing. Inversa? -> www.noxsoft.net