• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Хуки Windows

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Хуки Windows
Итак, у меня проблема с WH_CALLWNDPROC и WH_MSGFILTER хуками.
Вот функция моего хука:
Код:
LRESULT CALLBACK HookProc(DWORD nCode,WPARAM wParam,LPARAM lParam) 
{ 
  CallNextHookEx(hHook,nCode,wParam,lParam); 
return 0; 
} 


Вот функция установливающая Hook: 
void Install() 
{ 
 hInstance=GetModuleHandle(NULL);// Когда я ставлю вместо hInstance ноль то проблема тоже остаётся. 
 hHook=SetWindowsHookEx(WH_MSGFILTER,(HOOKPROC)&HookProc,hInstance,0); 
} 

И функция убирающая Hook: 

void Unistall() 
{ 
UnhookWindowsHookEx(hHook); 
} 

Ну и DLL Main: 

BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) 
{ 
 return TRUE; 
}

Так вот: Этот хук как вы заметили отлавливает сообщения выбора пункта меню (ну и ещё несколько событий) во всей системе.
Но когда я ставлю этот хук и нажимаю скажем в калькуляторе на меню, то у меня выскакивает ошибка:
"Программа выполнила недопустимую операцию и будет закрыта" и закрывется калькулятор.
Когда я ставлю хук WH_KEYBOARD, то всё нормально работает!
Если это имеет значения я пишу под Win95 с установленным IE 5.0
В чём дело?
 
G

Guest

Guest
Вои цитата из MSDN:
If code is less than zero, the hook procedure must return the value returned by CallNextHookEx.

If code is greater than or equal to zero, and the hook procedure did not process the message, it is highly recommended that you call CallNextHookEx and return the value it returns; otherwise, other applications that have installed WH_MSGFILTER hooks will not receive hook notifications and may behave incorrectly as a result. If the hook procedure processed the message, it may return a nonzero value to prevent the system from passing the message to the rest of the hook chain or the target window procedure.
Собственно они настоятельно рекомендуют возвращать то, что вернул CallNextHookEx. А ты, судя по коду, возвращаешь 0.

Гуд бай ламерzzzz ^)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!