; ======================================================================================
; = AxMan v3.01 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
; -------- Initialised Data ------------------------------------------------------------
.data
szSerial db '000-000-000',0
StringFmat db '%s%sMy Love',0
Fmat db '%lu',0
; -------- UnInitialised Data ----------------------------------------------------------
.data?
szName db 32 dup (?)
szCompany db 32 dup (?)
szBuffer db 99 dup (?)
; -------- Program Code ----------------------------------------------------------------
.code
Start:
; Print Message
PrintM "AxMan v3.01 *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
; Read Company
PrintM "Company: "
invoke Input, addr szCompany, 30
; Calculate Serial#
mov esi, offset szName
mov edi, offset szName
@@:
lodsb
.IF al >= 'A' && al <= 'Z'
add al,20h
stosb
.ELSEIF al != 20h
stosb
.ENDIF
or al,al
jnz @B
mov esi, offset szCompany
mov edi, offset szCompany
@@:
lodsb
.IF al >= 'A' && al <= 'Z'
add al,20h
stosb
.ELSEIF al != 20h
stosb
.ENDIF
or al,al
jnz @B
invoke wsprintf, addr szBuffer, addr StringFmat, addr szName, addr szCompany
xor ecx,ecx
mov ebx, offset szBuffer
@LabelA:
movzx eax, byte ptr [ebx]
or al,al
jz @LabelB
shl ecx,4
add ecx,eax
inc bx
mov eax,ecx
and eax,0F0000000h
jz @LabelC
mov esi,eax
shr esi,18h
xor ecx,esi
@LabelC:
not eax
and ecx,eax
jmp @LabelA
@LabelB:
invoke wsprintf, addr szBuffer, addr Fmat, ecx
xor bx,bx
mov esi, offset szBuffer
mov edi, offset szSerial
@LabelE:
lodsb
or al,al
jz @LabelD
.IF bx == 3
mov bx, 1
inc di
.ELSE
inc bx
.ENDIF
stosb
jmp @LabelE
@LabelD:
; Print Serial
PrintFM <"Serial : %s">, addr szSerial
; Exit
Exit 0
end Start
|