Страница 1 из 2

Проблема с Хуками

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

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

Добавлено: 09 дек 2005, 12:41
Naeel Maqsudov
Черт его знает. Может перенесем это в WinAPI?

Добавлено: 09 дек 2005, 12:44
LAngel
Не против :)

Re: Проблема с Хуками

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

Добавлено: 09 дек 2005, 16:58
LAngel
А если под простым юзером?

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

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

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

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

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

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

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