004094C4 /$ 55 push ebp
004094C5 |. 8BEC mov ebp, esp
004094C7 |. 53 push ebx
004094C8 |. 56 push esi
004094C9 |. 57 push edi
004094CA |. 8B5D 0C mov ebx, [ebp+C] ;ebx==our key
004094CD |. 85DB test ebx, ebx ;test if it is empty
004094CF |. 74 0C je short 004094DD ;exit if empty
004094D1 |. 53 push ebx
004094D2 |. E8 B1870A00 call 004B1C88 ; calculate the length of the key,
004094D7 |. 59 pop ecx
004094D8 |. 83F8 10 cmp eax, 10 ;the length must be 10 in hex
004094DB |. 74 04 je short 004094E1 ;if the key is shorter or longer,exit
004094DD |> 33C0 xor eax, eax
004094DF |. EB 39 jmp short 0040951A
004094E1 |> 0FBE73 06 movsx esi, byte ptr [ebx+6] ;fetch the sixth letter of our key
004094E5 |. 8BC6 mov eax, esi
004094E7 |. 0FBE7B 0E movsx edi, byte ptr [ebx+E] ;fetch the fourteenth letter of our key
004094EB |. 03C7 add eax, edi ; add the sixth and fourteenth letter of the key
004094ED |. 3D 9B000000 cmp eax, 9B ;the sum must be 9b in hex
004094F2 |. 75 24 jnz short 00409518
004094F4 |. 8BCE mov ecx, esi ;ecx==ascii of the sixth letter
004094F6 |. 2BCF sub ecx, edi ;sub the ascii of the fourteenth letter
004094F8 |. 8BC1 mov eax, ecx ;put the answer into eax
004094FA |. 99 cdq ;edx is extended as the 31 number of eax
;if the highest bit of eax is 1,then
;edx==0FFFFh,else edx==0000h
004094FB |. 33C2 xor eax, edx ;let's assume the answer as x
;x xor edx
004094FD |. 2BC2 sub eax, edx ;(x xor edx)-edx
004094FF |. 83C0 41 add eax, 41 ;(x xor edx)-edx +41
00409502 |. 0FBE53 09 movsx edx, byte ptr [ebx+9]
00409506 |. 3BC2 cmp eax, edx ;the ascii of the ningth letter must be {(x xor edx)-edx +41}
00409508 |. 75 0E jnz short 00409518 ;it's over
0040950A |. 8B45 08 mov eax, [ebp+8] ; fetch its own key word
0040950D |. C680 34030000>mov byte ptr [eax+334], 1
00409514 |. B0 01 mov al, 1
00409516 |. EB 02 jmp short 0040951A
00409518 |> 33C0 xor eax, eax
0040951A |> 5F pop edi
0040951B |. 5E pop esi
0040951C |. 5B pop ebx
0040951D |. 5D pop ebp
0040951E \. C3 retn
According to our analyse,it's is quite easy to create a keygen,so let's do it
I will just make the keygen as easy as possible
I download a template in asm from pediy,I will just pack it for u,you could change
anything as u want,just like what I do,hehe,if you don't want to do this,you can just
change the regkey.asm to make a new keygen,here is my source of the regkey.asm
include string.inc
includelib string.lib
include masm32.inc
includelib masm32.lib
include debug.inc
includelib debug.lib
.data
.data?
szName db 256 dup (?)
szSerial db 256 dup (?)
invoke SetDlgItemText,hDlg,IDC_REG,addr szSerial
.else
invoke SetDlgItemText,hDlg,IDC_REG,CTXT("Just enter a five letter name!")
.endif
popad
ret
GetRegCode endp
I think this shit is not diffcult for you genius to understand with the analyse above,so ,here
I won't comment it.
A little tip,if u accidentaly registered it and want to play again,you can just delete the Serial in the setting.ini