home *** CD-ROM | disk | FTP | other *** search
- .model tiny
-
- .386
-
- org 100h
-
- .data
-
- GroupLogo db 13,10
- db ' ▄▄▄▄▄ ',13,10
- db ' █ ▄ █ ',13,10
- db ' █▀▀▀▀▀▀▀▀ ▄ ▀▀▀▀▀ ▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀█ ',13,10
- db ' █ │░███████ │▓███████▀ │░███▀█▀▀▀▀▀▀▀ ▀ ▀▀▀▀ │░███▀█▀▀▀▀▀▓████▓▄ █ ',13,10
- db ' █ │▒███████ │▓███████ │▒███████ │▓███████▀ │▒███████ │▓███████ █ ',13,10
- db ' █ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ █ ',13,10
- db ' ▀ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ █▄▄▄ ',13,10
- db ' ▀ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████▄ ▄ █ ',13,10
- db ' █ │▓███████ │▓███████ │▓███████ │▓███████ │▓███████ █ ',13,10
- db ' █ │▓███████▄▄▄▄▄█▄█▓▀ │▓███████▄▄▄▄▄█▄████ │▓███████▀▀ ▀ ▀ █ ',13,10
- db ' █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▀ █▀▀▀▀▀▀▀▀▀ ▀ ▀▀ ',13,10
- db ' .::[ u n i t e d · c r æ c k i n g · f o r c e ]::. █ ▀ █ Antibody<SAC> ',13,10
- db ' █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▀ █▀▀▀▀▀▀▀▀▀ ▀ ▀▀ ',13,10
- db ' -----=====----- ',13,10
- db ' [■] All Software by Design Products - Key Generator by Quantico [■] ',13,10
- db ' -----=====----- ',13,10
- db ' ',13,10,'$'
-
- Whichproduct db 13,10
- db ' ',13,10
- db '(1) - Audition v2.8 ',13,10
- db '(2) - BattleStar v2.5 ',13,10
- db '(3) - Cardbase v2.6 ',13,10
- db '(4) - Crypto v3.1 ',13,10
- db '(5) - Disk clean up v3.1 ',13,10
- db '(6) - DLL show v3.3 ',13,10
- db '(7) - FXedit v2.8 ',13,10
- db '(8) - Font Show v2.7 ',13,10
- db '(9) - IconExtractor v3.0 ',13,10
- db '(10) - Notebook v4.2 ',13,10
- db '(11) - Password keeper v3.7 ',13,10
- db '(12) - Programmers IDE v2.4 ',13,10
- db '(13) - Reminders v3.3 ',13,10
- db '(14) - RGB v3.0 ',13,10
- db '(15) - Screen Loupe v3.9 ',13,10
- db '(16) - Shredder v2.3 ',13,10
- db '(17) - Submit It v2.3 ',13,10
- db '(18) - Toolbar v4.5 ',13,10
- db '(19) - Txedit 4.0 ',13,10
- db '',13,10
- db 'Enter a product (1-19) : ','$',13,10
- db ' ',13,10
-
-
- IntroMsgOne db 13,10,' Enter a name : ','$'
- IntroMsgTwo db 13,10,' Enter company name : ','$'
-
- ErrorMsg db 13,10,' Need 2-20 digits, try again...',13,10,'$'
-
- ShowCodeMsg db 13,10,'Registration number : '
-
- CodeBuffer db 10 dup(0),13,10,'$'
-
- NameBuffer db 18h, 19h dup(0)
- CompBuffer db 18h, 19h dup(0)
- ProdBuffer db 18h, 19h dup(0)
-
- DataTableOne db '#serB&nz|mfM1/5(!sd$Mq.{s]+sFjtKpzSdtzoXqmb^Al@dv:s?x/'
- DataTableTwo db '|b!pz*ls;rn|lf$vi^Axpe)rx5aic&9/2m5lsi4@0dmZw94cmqpfhw'
-
- Convert_Digs db '0123456789ABCDEF'
-
- .code
-
- .startup
-
- main proc near
- mov ah, 09h ;
- lea edx, GroupLogo ;
- int 21h ; show group logo
-
- mov ah, 09h ;
- lea edx, IntroMsgOne ;
- int 21h ; show intro and ask for input
-
- mov bx, 1402h
- lea edi, NameBuffer ;
- call getstr ; read user input
- jc @error ;
-
- mov ah, 09h ;
- lea edx, IntroMsgTwo ;
- int 21h ; show intro and ask for input
-
- mov bx, 1402h
- lea edi, CompBuffer ;
- call getstr ; read user input
- jc @error ;
-
- mov ah, 09h ;
- lea edx, Whichproduct ;
- int 21h ; show product message and ask for input
-
- lea edi, ProdBuffer ;
- call getprod ; read user input
- xor eax, eax ; clear eax
-
- lea dx, ProdBuffer+2 ; put what they typed into ax
- movsx eax, byte ptr [edx]
- cmp ax, 31h ; is ax = 1?
- je @digit2 ; go to check second digit (10-18)
- cmp ax, 32h ; is ax = 2
- je @battlestar ; then go to battlestar
- cmp ax, 33h ; is ax = 3
- je @cardbase ;
- cmp ax, 34h ;
- je @crypto ;
- cmp ax, 35h ; ax = 5 ?
- je @diskclean
- cmp ax, 36h ; ax = 6 ?
- je @dllshow
- cmp ax, 37h ; ax = 7 ?
- je @fileed
- cmp ax, 38h ; ax = 8 ?
- je @fontshow
- cmp ax, 39h ; ax = 9 ?
- je @iconex
-
-
- @digit2: ; checks the second digit of
- movsx eax, byte ptr [edx+01] ; user input
- test eax, eax ; is there no digit 2 ?
- je @audition ; then they entered 1
- cmp eax, 30h ; is it a 0 ? (10)
- je @notebook
- cmp eax, 31h ; did they enter 11?
- je @passkeep
- cmp eax, 32h ; did they enter 12?
- je @program
- cmp eax, 33h ; 12 ?
- je @remind
- cmp eax, 34h ; 13 ?
- je @rgb
- cmp eax, 35h ; 14 ?
- je @sloupe
- cmp eax, 36h ; 15 ?
- je @shredder
- cmp eax, 37h ; 16 ?
- je @submit
- cmp eax, 38h ; 17 ?
- je @toolbar
- cmp eax, 39h ; 18 ?
- je @txedit
-
- @audition:
- mov esi, 0AD10DADEh
- jmp @continue
-
- @battlestar:
- mov esi, 0ABADDEEDh
- jmp @continue
-
- @cardbase:
- mov esi, 0CDB95840h
- jmp @continue
-
- @crypto:
- mov esi, 0C69AA96Ch
- jmp @continue
-
- @diskclean:
- mov esi, 0DC9559CDh
- jmp @continue
-
- @dllshow:
- mov esi, 0DB95DB95h
- jmp @continue
-
- @fileed:
- mov esi, 0FEDAADEFh
- jmp @continue
-
- @fontshow:
- mov esi, 0F950059Fh
- jmp @continue
-
- @iconex:
- mov esi, 0ED0990DEh
- jmp @continue
-
- @notebook:
- mov esi, 0BEDABABEh
- jmp @continue
-
- @passkeep:
- mov esi, 00ABCDEF0h
- jmp @continue
-
- @program:
- mov esi, 0CC0DEFEDh
- jmp @continue
-
- @remind:
- mov esi, 0DEEDDEEDh
- jmp @continue
-
- @rgb:
- mov esi, 0C0DEABDEh
- jmp @continue
-
- @sloupe:
- mov esi, 0ABED0F00h
- jmp @continue
-
- @shredder:
- mov esi, 095989598h
- jmp @continue
-
- @submit:
- mov esi, 098954035h
- jmp @continue
-
- @toolbar:
- mov esi, 080888088h
- jmp @continue
-
- @txedit:
- mov esi, 0EDC0DEEDh
- jmp @continue
-
- @continue:
- call keygen ; create serial number
-
- mov ah, 09h ;
- lea dx, ShowCodeMsg ;
- int 21h ; print serial number
- jmp @exit ; finished, quit
- @error:
- mov ah, 09h
- lea dx, ErrorMsg
- int 21h
- @exit:
- mov al, 00h ;
- mov ah, 4Ch ;
- int 21h ; terminate program
- main endp
-
- keygen proc near
- or esi, 000000378h
- push esi
- lea esi, NameBuffer + 2
- movsx eax, byte ptr [esi - 1]
- call keysub
-
- pop esi
- add esi, eax
-
- push esi
- lea esi, CompBuffer + 2
- movsx eax, byte ptr [esi - 1]
- call keysub
-
- pop esi
- add eax, esi
-
- xor edx, edx
- mov ecx, 0000000Ah
- lea edi, CodeBuffer
- call convert_num
- ret
- keygen endp
-
- keysub proc near
- xor edi, edi
- xor ecx, ecx
- @more:
- movsx ebx, byte ptr [eax + ecx + DataTableOne] ; byte namelength+count+datetable
- movsx ebp, byte ptr [esi + ecx] ; byte of count+name
- lea edx, dword ptr [ecx + 1] ; counter increase
- imul ebx, ebp ;
- movsx ecx, byte ptr [ecx + DataTableTwo]
- imul ebx, ecx ; ebx*ecx
- imul ebx, edx ; ebx*edx
- add edi, ebx ; edi = edi+ebx
- mov ecx, edx ; set counter
- cmp edx, eax ; end of name ?
- jl @more ; go back for more
- mov eax, edi ; eax = code
- ret
- keysub endp
-
- ; get string from user
- ; input :
- ; edi = pointer to buffer
- ; bl = min length
- ; bh = max length
- ; output :
- ; CF error, cx number of bytes read
- getstr proc near
- push dx ; save dx
- mov dx, di ;
- mov ah, 0Ah ;
- int 021h ; get user input
-
- movsx ecx, byte ptr [edi + 1] ; get number of digits
-
- mov byte ptr [edi + ecx + 2], 00h
-
- cmp cl, bh ; check maximum
- jg @@0
- cmp cl, bl ; check minimum
- jl @@0
- xor ch, ch
- clc ; clear CF
- jmp @@1
- @@0:
- stc ; set CF (carry flag)
- @@1:
- pop dx ; restore dx
- ret
- getstr endp
-
- getprod proc near
- push dx ; save dx
- mov dx, di ;
- mov ah, 0Ah ;
- int 021h ; get user input
-
- movsx ecx, byte ptr [edi + 1] ; get number of digits
-
- mov byte ptr [edi + ecx + 2], 00h
-
- xor ch, ch
- clc ; clear CF
- pop dx ; restore dx
- ret
- getprod endp
-
- Convert_Num proc near
- pushf
- pushAD
-
- sub esp, 4
- mov ebp,esp
-
- cld
- mov esi, edi
- push esi
-
- ;--- loop for each digit
-
- sub bh, bh
- mov dword ptr [ebp], eax ;save low word
- mov dword ptr [ebp+4], edx ;save high word
- sub esi, esi ;count digits
-
- Connum1:
- inc esi
- mov eax, dword ptr [ebp+4] ;high word of value
- sub edx, edx ;clear for divide
- sub ebx, ebx
- div ecx ;divide, DX gets remainder
- mov dword ptr [ebp+4],eax ;save quotient (new high word)
-
- mov eax, dword ptr [ebp] ;low word of value
- div ecx ;divide, DX gets remainder
- ; (the digit)
- mov dword ptr [ebp], eax ;save quotient (new low word)
-
- mov bl, dl
- mov al, byte ptr [Convert_Digs+ebx] ;get the digit
- stosb ;store
-
- cmp dword ptr [ebp], 0 ;check if low word zero
- jne Connum1 ;jump if not
- cmp dword ptr [ebp+4], 0 ;check if high word zero
- jne Connum1 ;jump if not
-
- sub al, al
- stosb ;store the terminator
-
- ;--- reverse digits
-
- pop ecx ;restore start of string
- xchg ecx, esi
- shr ecx, 1 ;number of reverses
- jz Connum3 ;jump if none
-
- xchg edi, esi
- sub esi, 2 ;point to last digit
-
- Connum2 :
- mov al, byte ptr [edi] ;load front character
- xchg al, byte ptr [esi] ;swap with end character
- stosb ;store new front character
- dec esi ;back up
- loopd Connum2 ;loop back for each digit
-
- ;--- finished
-
- Connum3 :
- add esp, 4
-
- popad
- popf
- ret
- endp ;Convert_Num
-
- end main