| Autor | Správa |
KViki
 Užívateľ
 Založený: 21.10.2008 Príspevky: 197 Bydlisko: Nitra
 | Zaslal: So 01.08.09 16:01 |   |
Potrebujem aby program v delphi zaznamenaval vsetko aj ked je neaktivny.
Napr.: aj ked mam aktivne ine okno tak a stalcim klavesu tak mi ju program zaregistruje. neviem ci ma chapate. ?! |
| |
    |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1049
 | Zaslal: So 01.08.09 18:28 |   |
Ak ide len čisto o zaznamenanie stlačených klávesov, tak najideálnejšie to bude za pomoci hákov (hooks).
Vytvor si DLL:
| kód: | library Project1;
uses
SysUtils,
Classes,
Windows,
Dialogs;
{$R *.res}
var
hHak: HHOOK;
function OdchytenieKlavesu(kodHaku: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
if ((lParam and $80000000) = 0) then
ShowMessage(IntToStr(wParam));
Result:= CallNextHookEx(hHak, kodHaku, wParam, lParam);
end;
procedure PridajHak();
begin
hHak:= SetWindowsHookEx(WH_KEYBOARD, @OdchytenieKlavesu, HINSTANCE, 0);
end;
procedure OdstranHak();
begin
UnhookWindowsHookEx(hHak);
end;
exports PridajHak, OdstranHak;
begin
end. |
Vytvor si projekt:
| kód: | var
Form1: TForm1;
procedure PridajHak; external 'Project1.dll';
procedure OdstranHak; external 'Project1.dll';
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
PridajHak();
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
OdstranHak();
end; |
Knižnica nech je samozrejme v zložke s aplikáciou a nech sa volá Project1.dll (alebo si prepíš názov pri importovaní funkcií). Po každom stlačení klávesu sa v dialógu zobrazí ASCII stlačeného klávesu. |
| |
   |
 |
feromakovi
 Užívateľ
 Založený: 12.05.2009 Príspevky: 33 Bydlisko: Bánovce nad Bebravou
 |
v záujme toho aby som nemusel program distribuovať s knižnicou DLL tak som to skúsil prerobiť takto:
| kód: | unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
hHak: HHOOK;
txt:TextFile;
implementation
{$R *.dfm}
function OdchytenieKlavesu(kodHaku: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
if ((lParam and $80000000) = 0) then showmessage(chr(wParam));
Result:= CallNextHookEx(hHak, kodHaku, wParam, lParam);
end;
procedure PridajHak();
begin
hHak:= SetWindowsHookEx(WH_KEYBOARD, @OdchytenieKlavesu, HINSTANCE, 0);
end;
procedure OdstranHak();
begin
UnhookWindowsHookEx(hHak);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
assignfile(txt,'skuska.txt');
rewrite(txt);
PridajHak();
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
OdstranHak();
closefile(txt);
end;
end.
|
lenže robí to teraz také somariny:
tiež som hľadal nejakú možnosť ako spraviť keylogger ale no neviem asi toto nebude princíp na ktorom sú založené keyloggery
 |
_________________ SE C905 8GB
Gaming Notebook MSI GX720X-027SK P8400 4GB 320GB VGA | |
     |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1049
 |
Ehm
| citácia: | | Ak špecifikujete globálny hák, musí sa funkcia háku nachádzať v DLL knižnici ... |
Globálne háky nie sú WH_JOURNALRECORD a WH_JOURNALPLAYBACK - my sme použili WH_KEYBOARD, takže DLL je nevyhnutná. |
| |
   |
 |
KViki
 Užívateľ
 Založený: 21.10.2008 Príspevky: 197 Bydlisko: Nitra
 | Zaslal: Ne 02.08.09 11:47 |   |
No aj ja som premyslal ako spravit keylogger,. ale to neni primarne., Chcel som spravit multiClipBoard. Zistujem ze to nebude take jednoduche., :| |
| |
    |
 |
feromakovi
 Užívateľ
 Založený: 12.05.2009 Príspevky: 33 Bydlisko: Bánovce nad Bebravou
 | Zaslal: Ne 02.08.09 13:00 |   |
no našiel som na nete toto:
| kód: | | http://mo4x.wordpress.com/2007/03/30/simple-keylogger-in-delphi/ |
je to presne ako písal Fico že v tom čo on ukázal zdroják tak tam je použité:WH_KEYBOARD a v tom čo som našiel j tam je WH_JOURNALRECORD ...absolútne neviem čo to je ale aspoň viem čo si môžem pozrieť a naučiť sa...myslím tie háky
a mimochodom ten keylogger na tej stránke vyššie funguje už som ho aj skúšal len osobne som ho trošku preroobil aby som nemusel stláčať ten speedbutton a prekrásne funguje aj keď skryjem form takto:
| kód: | | Application.ShowMainForm := False; |
to som dal do oncreate a není program ani v lište ani v tray len v taskbare a z teda sa dá vymazať  |
_________________ SE C905 8GB
Gaming Notebook MSI GX720X-027SK P8400 4GB 320GB VGA | |
     |
 |
|