format PE console
use32
entry start
include 'win32a.inc'
;---------------------------------------
res dd ?
std_handle dd 0
s8 db 104,112,120 ; 3
s7 db 102,109,116 ; 3
s6 db 102,108,114,120 ; 4
s5 db 100,105,110,115,120 ; 5
s4 db 100,104,108,112,116,120 ; 6
s3 db 99,102,105,108,111,114,117,120 ; 8
s2 db 98,100,102,104,106,108,110,112,114,116,118,120,122 ; 13
s1 db 97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122 ; a-z 26
serial db 8 dup(?)
seed dd ?
;---------------------------------------
start:
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov [std_handle],eax
xor ebx,ebx
inc ebx
cikl:
cmp ebx,1
jnz @f
cinvoke rand
push 27
pop ecx
xor ah,ah
div cl
mov al,[s1+eax]
mov [serial+ebx],al ; ~~
@@:
cmp ebx,2
jnz @f
cinvoke rand
push 14
pop ecx
xor ah,ah
div cl
mov al,[s2+eax]
mov [serial+ebx],al
@@:
cmp ebx,3
jnz @f
cinvoke rand
push 9
pop ecx
xor ah,ah
div cl
mov al,[s3+eax]
mov [serial+ebx],al
@@:
cmp ebx,4
jnz @f
cinvoke rand
push 7
pop ecx
xor ah,ah
div cl
mov al,[s4+eax]
mov [serial+ebx],al
@@:
cmp ebx,5
jnz @f
cinvoke rand
push 6
pop ecx
xor ah,ah
div cl
mov al,[s5+eax]
mov [serial+ebx],al
@@:
cmp ebx,6
jnz @f
cinvoke rand
push 5
pop ecx
xor ah,ah
div cl
mov al,[s6+eax]
mov [serial+ebx],al
@@:
cmp ebx,7
jnz @f
cinvoke rand
push 4
pop ecx
xor ah,ah
div cl
mov al,[s7+eax]
mov [serial+ebx],al
@@:
cmp ebx,8
jnz @f
cinvoke rand
push 4
pop ecx
xor ah,ah
div cl
mov al,[s8+eax]
mov [serial+ebx],al
@@:
cmp ebx,8
jz ok
inc ebx
jmp cikl
ok:
invoke WriteConsole,[std_handle],serial,8,res,NULL
invoke ExitProcess,0
data import
library kernel32,'KERNEL32.DLL',\
user32, 'USER32.DLL',\
msvcrt, 'msvcrt.dll'
import msvcrt,rand,'rand'
include 'api\kernel32.inc'
include 'api\user32.inc'
end data