; ======================================================================================
; = WinAmp v2.x Keygenerator - (C) 1999 Teraphy / Phrozen Crew - http://teraphy.cjb.net
; ======================================================================================
.486
.model flat, stdcall
; -------- Include Files and Libraries -------------------------------------------------
include windows.inc
include elib32.inc
includelib elib32.lib
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
; -------- UnInitialised Data ----------------------------------------------------------
.data?
szName db 32 dup (?)
; -------- Program Code ----------------------------------------------------------------
.code
Start:
; Print Message
PrintM "WinAmp v2.x *Keygen*",CrLf, \
"(C) 1999 Teraphy",CrLf, \
"Name : "
; Read Name
invoke Input, addr szName, 30
; Check user input
.IF eax == 0
PrintM "Error : Name too short"
Exit -1
.ENDIF
; Calculate Serial#
mov esi,offset szName
add eax,esi
mov byte ptr [eax+1],0
mov byte ptr [eax+2],0
xor edi,edi
xor ebx,ebx
@@:
movsx eax,byte ptr [esi+2]
movsx ecx,byte ptr [esi]
xor eax,ecx
movsx ecx,byte ptr [esi+3]
not ecx
not eax
movsx edx,byte ptr [esi+1]
xor ecx,edx
add eax,ecx
mov ecx,edi
and ecx,0Fh
shl eax,cl
test eax,eax
jl LabelA
add ebx,eax
jmp LabelB
LabelA:
sub ebx,eax
LabelB:
inc edi
inc edi
inc esi
cmp byte ptr [esi],0
jnz @B
mov eax,ebx
mov ecx,0F4240h
imul eax,25h
cdq
idiv ecx
mov ecx,edx
mov esi,edx
imul ecx,64h
xor edi,edi
LabelD:
test esi,esi
je LabelC
mov eax,esi
cdq
mov ebx,64h
idiv ebx
mov eax,esi
push ebx
pop esi
add edi,edx
cdq
idiv esi
mov esi,eax
jmp LabelD
LabelC:
lea eax, [edi+2*edi]
cdq
mov esi,4
idiv esi
mov esi,64h
cdq
idiv esi
add edx,ecx
; Print Serial
PrintFM <"Serial: %lu">, edx
; Exit
Exit 0
end Start
|