mov al, byte ptr [ecx+6] ;ecx+06 xor ecx+14 xor 13 xor ecx+5
;与ABh数字异或得到结果
mov dl, byte ptr [ecx+14h]
xor al, dl
mov dl, byte ptr [ecx+13h]
xor al, dl
mov dl, byte ptr esp_10 ;esp_10=ecx+5
xor al, dl
xor al, 0ABh
mov dl, al
shr dl, 4
add dl, 30h
cmp dl, 39h
mov byte ptr esp_04, dl ;高4位
jbe RA_0E464
add dl, 7
mov byte ptr esp_04, dl
RA_0E464:
and al, 0Fh
add al, 30h
cmp al, 39h
mov byte ptr esp_08, al ;低4位
jbe RA_0E476
add al, 7
mov byte ptr esp_08, al
RA_0E476:
mov byte ptr [ecx+18h],al ;ecx+18 标志5******************
mov al, esp_04
mov byte ptr [ecx+0Eh],al ;ecx+0E 标志6********************
;*************************************************1D,1E flag
mov al, byte ptr [ecx+1Ah] ;1A,0c
mov dl, byte ptr [ecx+0Ch]
mov bl, byte ptr [ecx+8]
xor bl, al ;ecx+8 xor 1A xor 0C xor 数字63h最后结果
xor bl, dl
xor bl, 63h
mov dl, bl
mov al, dl
shr al, 4 ;高四位
add al, 30h
cmp al, 39h
mov byte ptr esp_04, al
jbe RA_0E4BC
add al, 7
mov byte ptr esp_04, al
RA_0E4BC:
and dl, 0Fh ;低四位
add dl, 30h
cmp dl, 39h
mov byte ptr esp_08, dl
jbe RA_0E4D2
add dl, 7
mov byte ptr esp_08, dl
RA_0E4D2:
mov byte ptr [ecx+1Eh],dl ;ecx+1D 标志7*************
mov al,esp_04
mov byte ptr [ecx+1Dh],al ;ecx+1E 标志8************
;**************************************************************
;****************************************************************partII,修正
lea ebx,Serial ;//add the interface
mov al, byte ptr [ebx+0Fh]
add al, byte ptr [ebx+10h]
add al, byte ptr [ebx+11h]
add al, byte ptr [ebx+12h]
add al, byte ptr [ebx+15h]
add al, byte ptr [ebx+16h]
add al, byte ptr [ebx+17h]
add al, byte ptr [ebx+19h]
xor al, byte ptr [ebx]
;add them ->al与0x46,ebx+5,0C,8,5位依次xor,再与0x58,0x3D xor
xor al, byte ptr [ebx+5]
xor al, byte ptr [ebx+8]
xor al, byte ptr [ebx+0Ch]
xor al, 58h
xor al, 3Dh
mov ah, al
shr al, 4
add al, 30h
cmp al, 39h
jbe RA_01BF2 ;convert high and low part to ascII
add al, 7
RA_01BF2:
and ah, 0Fh
add ah, 30h
cmp ah, 39h
jbe RA_01C00
add ah, 7
RA_01C00:
mov byte ptr [ebx+13h], al ;ebx+13==high
mov byte ptr [ebx+14h], ah ;ebx+14==low
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
mov al, byte ptr [ebx]
add al, byte ptr [ebx+0Ah] ;'F' xor ebx+01,2,3,8,9,13,14 xor 0x18->al
xor al, byte ptr [ebx+01h]
xor al, byte ptr [ebx+02h]
xor al, byte ptr [ebx+03h]
xor al, byte ptr [ebx+08h]
xor al, byte ptr [ebx+09h]
xor al, byte ptr [ebx+13h]
xor al, byte ptr [ebx+14h]
xor al, 18h
mov ah, al
shr al, 04h
add al, 30h
cmp al, 39h
jbe RA_01C2F
add al, 07h
RA_01C2F:
and ah, 0Fh
add ah, 30h
cmp ah, 39h
jbe RA_01C3D
add ah, 07h
RA_01C3D:
mov byte ptr [ebx+1Ah], al ;ebx+1A==high
mov byte ptr [ebx+1Bh], ah ;ebx+1B==low part
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mov al, byte ptr [ebx+13h]
xor al, byte ptr [ebx+14h]
xor al, byte ptr [ebx+05h]
xor al, byte ptr [ebx+06h] ;ebx+13,14,5,6 xor 0xAB->al
xor al, 0ABh
mov ah, al
shr al, 04h
add al, 30h
cmp al, 39h
jbe RA_01C5E
add al, 07h
RA_01C5E:
and ah, 0Fh
add ah, 30h
cmp ah, 39h
jbe RA_01C6C
add ah, 07h
RA_01C6C:
mov byte ptr [ebx+0Eh], al ;ebx+0E==high
mov byte ptr [ebx+18h], ah ;ebx+18==Low
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mov al, byte ptr [ebx+1Ah] ;ebx+1A,1B,0C xor 0x 63
xor al, byte ptr [ebx+1Bh]
xor al, byte ptr [ebx+0Ch]
xor al, 63h
mov ah, al
shr al, 04h
add al, 30h
cmp al, 39h
jbe RA_01C8A
add al,7
RA_01C8A:
and ah, 0Fh
add ah, 30h
cmp ah, 39h
jbe RA_01C98
add ah,7
RA_01C98:
mov byte ptr [ebx+1Dh], al ;ebx+1D==high
mov byte ptr [ebx+1Eh], ah ;ebx+1E==Low
;+++++++++++++++++++++++++++++++++++++++++++++++++++ over!!!!!!!!!!!!!!
POPAD
Cal endp
randomize proc
pushad
mov ebx,[esp+10h]
mov rand_init,bl
popad
ret
randomize endp
rand proc range
LOCAL @stime:SYSTEMTIME
pushad
invoke GetSystemTime,addr @stime
mov eax,range
.if ah==al
mov bl,al
jmp rand_exit
.endif
mov bx,@stime.wMilliseconds
mov ecx,1000
randlop:dec ecx
jnz next
mov bl,38h
jmp rand_exit
next:
add bh,bl
add bl,rand_init
add bl,2
cmp bl,al
jb randlop
cmp bl,ah
ja randlop
rand_exit:
add rand_init,3
mov rand_out,bl
popad
ret
rand endp
|