Форум о защите от: хакеров, взлом, раскрутка, хакер, вирусы, взлом программы, взлом паролей, взлом вконтакте, взлом icq, раскрутка сайта, взлом скачать, взлом почты, взлом ru, проги взлома, хакер, программа взлома, трояны, программирование http://forum.ahack.ru/ |
|
Защита от клавиатурных шпионов http://forum.ahack.ru/topic792.html |
Страница 1 из 1 |
Автор: | BECHED [ 02-03, 18:17 ] |
Заголовок сообщения: | Защита от клавиатурных шпионов |
Подавляющее большинство клавиатурных шпионов использует для мониторинга нажатий клавиш hook-процедуру WH_KEYBOARD. Чтобы клавиатурное сообщение не попало в установленную ловушку, достаточно перехватить вызов этой hook-процедуры и отменить его. Это можно сделать, установив свой hook - WH_DEBUG. Процедура этого hook'а будет получать управление при вызове других hook-процедур. Таким образом, мы устанавливаем hook для других hook'ов, получая, в результате, достаточно мощное средство. Приступим к написанию. Создайте новый DLL-проект; VCL можно отключить. Код процедуры в DLL: extern "C" __export LRESULT CALLBACK DebugProc(int nCode, WPARAM wParam, LPARAM lParam) { if(nCode == HC_ACTION) { if(wParam == WH_KEYBOARD) { if(MessageBox(NULL, "Do you want to pass keyboard message to WH_KEYBOARD hook-procedure?", "Confirmation", MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2 | MB_TOPMOST | MB_SYSTEMMODAL) == IDNO) return 1; } } return CallNextHookEx(NULL, nCode, wParam, lParam); } Мы проверяем тип вызываемой ловушки на соответствие WH_KEYBOARD, и, если равенство верное, запрашиваем подтверждение на вызов этой процедуры. Если в пропуске отказано, возвращаем ненулевое значение. Код приложение, ответственное за установку и снятие этой ловушки. // Глобальные переменные: HMODULE hDLL = NULL; HHOOK hHook = NULL; //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(hHook != NULL) { ShowMessage("The Hook has already been set."); return; } hDLL = LoadLibrary("hook.dll"); if(hDLL == NULL) { ShowMessage("Can't load hook.dll. Reason: " + SysErrorMessage(GetLastError())); return; } typedef LRESULT __import (CALLBACK *fnType)(int, WPARAM, LPARAM); fnType DebugProc = (fnType)GetProcAddress(hDLL, "DebugProc"); if(DebugProc == NULL) { FreeLibrary(hDLL); hDLL = NULL; ShowMessage("Can't find "DebugProc" in hook.dll."); return; } hHook = SetWindowsHookEx(WH_DEBUG, (HOOKPROC)DebugProc, hDLL, 0); if(hHook == NULL) { FreeLibrary(hDLL); hDLL = NULL; ShowMessage("Can't set WH_DEBUG hook. Reason: " + SysErrorMessage(GetLastError())); return; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { if(hDLL) FreeLibrary(hDLL); if(hHook) { UnhookWindowsHookEx(hHook); hHook = NULL; } } Не забудьте переименовать DLL (или изменить её имя в коде). hackzona |
Автор: | Rizza [ 11-03, 21:35 ] |
Заголовок сообщения: | |
спс! |
Автор: | fakish [ 27-06, 22:33 ] |
Заголовок сообщения: | |
круто, первый раз слышу про таких шпионов =)) |
Автор: | лёва [ 10-11, 10:54 ] |
Заголовок сообщения: | |
ничего не понял!но такие проблемы сейчас очень актуальны! |
Автор: | BECHED [ 25-11, 17:40 ] |
Заголовок сообщения: | |
лёва Ничего удивительного, это не для новичков. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |