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

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

09 дек 2005, 12:32

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

Как, и возможно ли, установить хук на создание окна, чтобы он отрабатывал всегда, даже если окно создается под именем другого пользователя?
С уважением, Lost Angel...
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

09 дек 2005, 12:41

Черт его знает. Может перенесем это в WinAPI?
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

09 дек 2005, 12:44

Не против :)
С уважением, Lost Angel...
DeeJayC
Сообщения: 492
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

09 дек 2005, 12:49

Была такая проблема у меня под NT, но вылечилась установкой под локальным администратором.
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

09 дек 2005, 16:58

А если под простым юзером?

Нужно для чит-клиента под WoW.
С уважением, Lost Angel...
DeeJayC
Сообщения: 492
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

09 дек 2005, 17:50

А тогда можно всё равно сервис под администратором запустить. Я прогу в сервис из-за этого переделывал.
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

12 дек 2005, 13:42

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

Запустить клиента как службу - ну, не знаю... Не слишком ли жирно? :) Можно поковыряться с impersonation: получить маркер админа, доступ к объектам window station и desktop, задать требуемые права (в ч-ти, DESKTOP_HOOKCONTROL), навесить хук, ну и вернуться к обычному юзеру. Сложно, согласен - но интересно ;)
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

13 дек 2005, 10:33

Пока проблемма решилась периодическим enum'ом всех процессов и окон в системе. На это, почему-то права сохраняюся даже и у непривилегированного пользователя ;)
Вот только этот метод требует сравнительно больших затрат процессорного времени :(
Может быть есть возможность отследить запуск процессов каким-либо "нетрадиционым" методом?
С уважением, Lost Angel...
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

13 дек 2005, 13:19

Может и есть, я не знаю. Все известные мне методы сводятся или к перехвату системных вызовов (и самый известный способ как раз использует для этого global hooks, см. Рихтер, гл.22), или то, что ты сделал - периодический опрос. IMHO, нормальное решение, если не требуется уж очень быстрая реакция на событие. Тем более, что интервалом ты можешь управлять.
AlexDav
Сообщения: 34
Зарегистрирован: 18 окт 2005, 15:37

13 дек 2005, 15:17

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