Piszemy Konfigurator pod keylogera/trojana/itp

3rr0rx

Użytkownik
Dołączył
Luty 10, 2007
Posty
712
W tutku opiszę jak utworzyć prosty konfiguratorek pod keyloger'a/serwer/itp.

Co będzie nam potrzebne?:

-Borland Delphi 7
-Mózg

Do roboty...

Stworzymy 2 pliki, jeden będzie konfiguratorem a drugi serwerem. Efektem pracy będzie Generowanie serwera poprzez konfigurator i konfigurowanie go.

Serwer

Odpalamy Delphi i tworzymy nowy projekt.

Na forme wrzucamy komponenty:

-Edit x2

Tak powinna wyglądać nasza 'Forma':

87f23344e598218d.png


No i teraz na łatwizne, skorzystamy z gotowca znalezionego w necie...

W głównym Var dodajemy:
Kod:
XXX : string;


Pod
Kod:
implementation



{$R *.dfm}
Wklejamy ten kod:

Kod:
function Split(input:string;s:integer):string;

var

l : integer;

d : integer;

finish :string;

begin

l :=0;

d :=0;

while (d <= s) and (length(input) >= l) do

begin

l := l + 1;

if d = s then

finish := FINISH + copy(input,l,1);

if copy(input,l,1) = '|' then

d := d + 1;

end;

while Pos('|', finish) > 0 do

delete(finish, Pos('|', finish), 1);

split := finish;

end;



//



function LoadFromExe(FName: string): string;

var

F : file of Byte;

i : Integer;

begin

Result := '';

AssignFile(F, FName);

FileMode := fmOpenRead;

Reset(F);

try

Seek(F, FileSize(F) - SizeOf(i));

BlockRead(F, i, SizeOf(i));

if (i < SizeOf(i)) or (i > FileSize(f)) then Exit;

Seek(F, FileSize(F) - i);

SetLength(Result, i - SizeOf(i));

BlockRead(F, Result[1], Length(Result));

XXX := Result;

Split(XXX,0); // Odpowiada Edit1 z konfiguratora

Split(XXX,1); // Odpowiada Edit2 z konfiguratora

//Ile editów, tyle razy powielamy Split...

finally

CloseFile(F);

end;

end;

Teraz do zdarzenia OnCreate Formy wklejamy:
Kod:
CopyFile(Pchar(paramstr(0)),Pchar('c:plik.exe'),True); // skopiowanie pliku na dysk c:

LoadFromExe('c:plik.exe'); // zaladowanie stringów

Edit1.text:=Split(XXX,0); // przypisanie edit1 wartosci z pierwszego stringa

Edit2.text:=Split(XXX,1); // -||- -||- ... z drugiego stringa 

DeleteFile('c:plik.exe'); //kasuje plik.exe z C:

Kompilujemy i zapisujemy nasz program.

Dobra to by było na tyle jeśli chodzi o serwer, ofc. można to urozmaicić ale to już według waszych potrzeb =p

Konfigurator

Odpalamy delphi i tworzymy nowy projekt.

Na forme wrzucamy:

-Edit x2
-Button

Tak powinna wyglądać nasza 'Forma':

9feec1fc46b49326.png


Pod
Kod:
implementation



{$R *.dfm}
wklejamy:


Kod:
procedure SaveToExe(FName, Str: string);

var

F : File of Byte;

I : Integer;

begin

AssignFile(F, FName);

Reset(F);

try

Seek(F, FileSize(F) - SizeOf(I));

BlockRead(F, I, SizeOf(I));

if (I < SizeOf(I)) or (I > FileSize(F)) then I := 0;

Seek(F, FileSize(F) - I);

Truncate(F);

BlockWrite(F, Str[1], Length(Str));

I := Length(Str) + SizeOf(I);

BlockWrite(F, I, SizeOf(I));

finally

CloseFile(F);

end;

end;

Klikamy teraz 2 razy na button i wklejamy:

Kod:
SaveToExe('serwer.exe',Edit1.Text+'|'+Edit2.Text); //konfigurator //zapisuje dane z pól edit1 i edit2 Konfiguratora i zapusuje je w //serwerze

Kompilujemy i zapisujemy nasz projekt.

Narazie to nie wszystko z konfiguratorem... zaraz do niego wrócimy

Zasoby

Utworzymy teraz zasób który upchamy do konfiguratora. Zasobiem konfiguratora będzie właśnie serwer.

Robimy sobie nowy oddzielny folder (zeby sie pozniej nie pogubić). Do tego folderu musisz wkleić plik brcc32.exe który znajduje się:
(doyślnie)
Kod:
C:Program FilesBorlandDelphi7Bin
Wklejamy również nasz serwer.
W tym samym folderze tworzymy nowy dokument tekstowy(*txt) załóżmy pod nazwą zasob.txt, i piszemy w nim:
Kod:
serwer RCDATA "serwer.exe"
Podsumowywując: W naszym folderze powinniśmy mieć 3 pliki:
-brcc32.exe
-serwer.exe
-zasob.txt

Jesli wszystko się zgadza to otwieramy CMD (uruchomić można Start>uruchom>(wpisujesz)CMD i Enter
i teraz musimy podać ścieżkę do pliku brcc32.exe(spacja)ścieżka do zasob.txt. Podam przykład:
Kod:
C:Documents and Settings3rr0rxPulpitkonfiguratorzasobbrcc32.exe C:Documents and Settings3rr0rxPulpitkonfiguratorzasobzasob.txt
Jesli wszystko będzie OK to w folderze powinien ukazać się plik zasob.res.

No to zasób gotowy, czas dokończyć konfigurator.

Konfigurator/Upychanie zasobów

Do folderu z źródłem konfiguratora musimy skopiować zasob.res, który przed chwilką utworzyliśmy.
Jak już to zrobiliśmy to otwieramy nasz projekt (źródełko konfiguratora) i piszemy:
Pod
Kod:
implementation



{$R *.dfm}
wpisuesz:
Kod:
{$R zasob.RES}

W całości powinno to wyglądać tak:
Kod:
implementation



{$R *.dfm}

{$R res.RES}

Jak już to zrobiliśmy to przydałoby się ten serwer wypakować
smile.gif
no więc...
Do głównego Var wpisujemy:
Kod:
 Res : TResourceStream;

 Dir : String;

Klikamy teraz 2x na naszego Buttona i przed wcześniej wpisanym kodem piszemy:
Kod:
Res:=TResourceStream.Create(hInstance, 'serwer', RT_RCDATA);

  Res.SaveToFile(GetCurrentDir+'serwer.exe'); //pobiera aktualna //sciezke i wypakowywuje nasz serwer jako serwer.exe

  Res.Free;

sleep(500);

W całości kod z buttona powinien wyglądać tak:

Kod:
Res:=TResourceStream.Create(hInstance, 'serwer', RT_RCDATA);

  Res.SaveToFile(GetCurrentDir+'serwer.exe'); //pobiera aktualna //sciezke i wypakowywuje nasz serwer jako serwer.exe

  Res.Free;

sleep(500);

SaveToExe('serwer.exe',Edit1.Text+'|'+Edit2.Text); //konfigurator //zapisuje dane z pól edit1 i edit2 Konfiguratora i zapusuje je w //serwerze

To by było na tyle
<


Tutek created by: 3rr0rx
<


Jakieś pytania? to pisać Tu a nie spamować mi gg :)
 

rafal

Były Moderator
Dołączył
Marzec 30, 2005
Posty
392
Wrescie ktos to zebrał do kupy :)
Mozna wprowadzic do tego kilka poprawek badz zrobic to ciut prosciej za pomoca MadRes, ale topic git , wiec przyklejam :)
 

TSPablos

Użytkownik
Dołączył
Wrzesień 5, 2007
Posty
44
Jesli wszystko się zgadza to otwieramy CMD (uruchomić można Start>uruchom>(wpisujesz)CMD i Enter
i teraz musimy podać ścieżkę do pliku brcc32.exe(spacja)ścieżka do zasob.txt. Podam przykład:
Kod:

C:Documents and Settings3rr0rxPulpitkonfiguratorzasobbrcc32.exe C:Documents and Settings3rr0rxPulpitkonfiguratorzasobzasob.txt[/b]


Może wystąpić problem ze ścieżką, jak dobrze pamiętam, kiedy wystepują spacje w ścieżce nalezy wziąć całą ścieżkę w '....' cudzysłowy. Ja tam zrobiłem sobie D:zasobbrcc32.exe i mam luzz
smile.gif
)

[ Dodano: 16-09-2007, 12:03 ]
poza tym wszystko działa
smile.gif
dobra robota wielkie dzięki
smile.gif
 

adikx

Użytkownik
Dołączył
Maj 21, 2007
Posty
415
Artykuł fajny ale trzeba mieć pojęcie o delphi żeby zrozumieć kod a jak ktoś chce zrobić np. 3 edity to nie wie e trzeba rozdzielić je | i potem odczytać split(XXX,2) itd.
 

3rr0rx

Użytkownik
Dołączył
Luty 10, 2007
Posty
712
OK dodałem wygląd 2 'Form', konfiguratora i serwera. Może potem dam gotowe źródełko.
 

mateok

Użytkownik
Dołączył
Sierpień 16, 2007
Posty
7
Nie ma jakiegoś innego sposobu? Bo za każdym razem, gdy uruchomię serwer, to program coś robi... ;/ A powinno być tak, że tylko raz tak się robi, a nie za każdym razem...
<

A poza tym świetny tutek
smile.gif
Działa w 100%
smile.gif
 

mateok

Użytkownik
Dołączył
Sierpień 16, 2007
Posty
7
No bo w serwerze w OnCreate jest jakis kod. I oto chodzi, zeby mi serwer za kazdym razem nie przetwarzal tego kodu, tylko raz a dobrze
<
Zeby te dane byly juz wprowadzone na zawsze ;]
 

T$cr!pt3r

Użytkownik
Dołączył
Lipiec 23, 2007
Posty
207
Moim zdaniem żeby było "all in one" to jeszcze brakuje tutaj: "Jak napisać bindera?"
Nie ma wiele roboty, bo wystarczy podąć zwykłą funkcje UpdateResource i tyle, ale ludziom
się przyda :]
 

grzonu

Były Moderator
Dołączył
Grudzień 26, 2006
Posty
1390
ale już own3r napisal arta o tworzeniu bindera pozatym przy tworzeniu bindera nie zawsze trzeba kozystac z zasobow
<
 

Bezel21

Użytkownik
Dołączył
Maj 22, 2007
Posty
104
Klikamy teraz 2x na naszego Buttona i przed wcześniej wpisanym kodem piszemy:
Kod:

Res:=TResourceStream.Create(hInstance, 'serwer', RT_RCDATA);
Res.SaveToFile(GetCurrentDir+'serwer.exe'); //pobiera aktualna //sciezke i wypakowywuje nasz serwer jako serwer.exe
Res.Free;
sleep(500);[/b]


Mi wyskakuje blad, jak to dam...
[Error] Unit2.pas(53): Undeclared identifier: 'Res'

PROSZĘ O POMOC!!
 

3rr0rx

Użytkownik
Dołączył
Luty 10, 2007
Posty
712
Dopisz do początkowego VAR'a

Res : TResourceStream;
Dir : String;

Mozesz tez zrobic tak...

Kod:
Var



 Res : TResourceStream;

 Dir : String; 



begin

Res:=TResourceStream.Create(hInstance, 'serwer', RT_RCDATA);

Res.SaveToFile(GetCurrentDir+'serwer.exe'); //pobiera aktualna //sciezke i wypakowywuje nasz serwer jako serwer.exe

Res.Free;

sleep(500);
 

Bezel21

Użytkownik
Dołączył
Maj 22, 2007
Posty
104
Originally posted by 3rr0rx
Dopisz do początkowego VAR'a

Res : TResourceStream;
Dir : String;

Mozesz tez zrobic tak...

Kod:
Var



 Res : TResourceStream;

 Dir : String; 



begin

Res:=TResourceStream.Create(hInstance, 'serwer', RT_RCDATA);

Res.SaveToFile(GetCurrentDir+'serwer.exe'); //pobiera aktualna //sciezke i wypakowywuje nasz serwer jako serwer.exe

Res.Free;

sleep(500);

Wszystko OK, ale kiedy uruchomie Konfigurator all dziala, gdy nacisne Button - u mnie Generuj pojawia się: Resource serwer not found, co to ma znaczyc??
A tak pozatym co trzeba wpisac w te Edit 1, Edit 2 ?
I do czego to jest keylogger?

Pozdro
 

3rr0rx

Użytkownik
Dołączył
Luty 10, 2007
Posty
712
<


Na logike...

Originally posted by Bezel21
Resource serwer not found, co to ma znaczyc??

Nie upchałes do zasobów "serwer" stąd ten komunikat.

Originally posted by Bezel21
A tak pozatym co trzeba wpisac w te Edit 1, Edit 2 ?
I do czego to jest keylogger?

:E
Nie keyloger a konfigurator, w pola wpisujesz to co chcesz zeby bylo w serwerze.

Moze by tak pierw podstawy ogarnac a potem się za to wziasc? :)

http://4programmers.net/Delphi/Kompendium
 

darkhaker

Użytkownik
Dołączył
Wrzesień 9, 2007
Posty
131
Originally posted by 3rr0rx
Nie keyloger a konfigurator, w pola wpisujesz to co chcesz zeby bylo w serwerze.
Np. Numer GG serwera i haslo GG a potem żeby serwer do ciebie np wysłał wiadomość 'Serwer włączony'

[ Dodano: 23-11-2007, 17:25 ]
 

dare_devil

Użytkownik
Dołączył
Wrzesień 9, 2007
Posty
32
Co robie źle bo pisze mi że error

Kod:
begin

  Application.Initialize;

  Application.CreateForm(TForm1, Form1);

  Application.CreateForm(TForm2, Form2);

  Application.Run;
 
Do góry Bottom