PDA

Просмотр полной версии : Проблема с Хуками



LAngel
09.12.2005, 12:32
Интересный факт.
Глобальные хуки (в моем случае WH_SHELL) действуют только на приложения, запущенные под тем пользователем, под которым устанавливался хук.

Как, и возможно ли, установить хук на создание окна, чтобы он отрабатывал всегда, даже если окно создается под именем другого пользователя?

Naeel Maqsudov
09.12.2005, 12:41
Черт его знает. Может перенесем это в WinAPI?

LAngel
09.12.2005, 12:44
Не против :)

DeeJayC
09.12.2005, 12:49
Была такая проблема у меня под NT, но вылечилась установкой под локальным администратором.

LAngel
09.12.2005, 16:58
А если под простым юзером?

Нужно для чит-клиента под WoW.

DeeJayC
09.12.2005, 17:50
А тогда можно всё равно сервис под администратором запустить. Я прогу в сервис из-за этого переделывал.

Eugie
12.12.2005, 13:42
Проблема, действительно, с правами доступа к объекту "рабочий стол" (desktop). По умолчанию у непривилегированного пользователя нет прав на установку хуков (любых), у служб такое право есть.

Запустить клиента как службу - ну, не знаю... Не слишком ли жирно? :) Можно поковыряться с impersonation: получить маркер админа, доступ к объектам window station и desktop, задать требуемые права (в ч-ти, DESKTOP_HOOKCONTROL), навесить хук, ну и вернуться к обычному юзеру. Сложно, согласен - но интересно ;)

LAngel
13.12.2005, 10:33
Пока проблемма решилась периодическим enum'ом всех процессов и окон в системе. На это, почему-то права сохраняюся даже и у непривилегированного пользователя ;)
Вот только этот метод требует сравнительно больших затрат процессорного времени :(
Может быть есть возможность отследить запуск процессов каким-либо "нетрадиционым" методом?

Eugie
13.12.2005, 13:19
Может и есть, я не знаю. Все известные мне методы сводятся или к перехвату системных вызовов (и самый известный способ как раз использует для этого global hooks, см. Рихтер, гл.22), или то, что ты сделал - периодический опрос. IMHO, нормальное решение, если не требуется уж очень быстрая реакция на событие. Тем более, что интервалом ты можешь управлять.

AlexDav
13.12.2005, 15:17
Посмотри очень интересно http://www.wasm.ru/article.php?article=hiddndt правда не знаю поможет ли тебе :)

LAngel
13.12.2005, 16:01
видел уже
неделю назад прочитал, распечатал, ещё прочитал... зачитал до масляных пятен, потом закинул на полку.