La comprobacion del serial esta mal. Si ingresas un UserName de 3 caracteres (por ej. abc), el calculo se hace en forma incorrecta.
En esta parte:
Aqui se calcula un DWORD que despues sera usado para XORear.
En resumen, despues de ejecutar el bucle, lo que hace esto es:
xordw2 = (username[2] xor username[4]) + 9
Como ven, si el Username tiene 3 chars, entonces username[4] lee un byte de afuera del string.
En resumen, el serial se calcularia asi:
xordw1 = username[3] + 02Dh
xordw2 = (username[3] xor username[5]) + 9
xordw3 = (xordw2 xor xordw1) + 7
xordw4 = (xordw3 xor xordw2) + 019h
serial = xordw3 + xordw4 + 02Dh
Pero bueno, calculo que se podria hacer un keygen para Usernames ede largo 4 a 10...
Saludos!
En esta parte:
Código [Seleccionar]
00401579 C745 84 00000000 MOV DWORD PTR SS:[EBP-7C],0
00401580 8B45 84 /MOV EAX,DWORD PTR SS:[EBP-7C]
00401583 3B45 9C |CMP EAX,DWORD PTR SS:[EBP-64]
00401586 7D 27 |JGE SHORT KeygenMe.004015AF
00401588 8D45 F8 |LEA EAX,DWORD PTR SS:[EBP-8]
0040158B 0345 84 |ADD EAX,DWORD PTR SS:[EBP-7C]
0040158E 83E8 10 |SUB EAX,10
00401591 0FBE10 |MOVSX EDX,BYTE PTR DS:[EAX]
00401594 8D45 F8 |LEA EAX,DWORD PTR SS:[EBP-8]
00401597 0345 84 |ADD EAX,DWORD PTR SS:[EBP-7C]
0040159A 83E8 0E |SUB EAX,0E
0040159D 0FBE00 |MOVSX EAX,BYTE PTR DS:[EAX]
004015A0 31D0 |XOR EAX,EDX
004015A2 83C0 09 |ADD EAX,9
004015A5 8945 94 |MOV DWORD PTR SS:[EBP-6C],EAX
004015A8 8D45 84 |LEA EAX,DWORD PTR SS:[EBP-7C]
004015AB FF00 |INC DWORD PTR DS:[EAX]
004015AD ^ EB D1 \JMP SHORT KeygenMe.00401580
Aqui se calcula un DWORD que despues sera usado para XORear.
En resumen, despues de ejecutar el bucle, lo que hace esto es:
xordw2 = (username[2] xor username[4]) + 9
Como ven, si el Username tiene 3 chars, entonces username[4] lee un byte de afuera del string.
En resumen, el serial se calcularia asi:
xordw1 = username[3] + 02Dh
xordw2 = (username[3] xor username[5]) + 9
xordw3 = (xordw2 xor xordw1) + 7
xordw4 = (xordw3 xor xordw2) + 019h
serial = xordw3 + xordw4 + 02Dh
Pero bueno, calculo que se podria hacer un keygen para Usernames ede largo 4 a 10...

Saludos!