Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Хуки и PostMessage в Vista   Найти похожие ветки 

 
Denied   (2009-02-28 14:01) [0]

День добрый.
Столкнулся с такой проблемой:
Приложение устанавливает хук, dll результаты работы передает в основную программу с помощью PostMessage.
И все было бы хорошо, если бы это работало в Vista...

Проблема №1: если программа, устанавливающая хук, запущена с правами обычного пользователя, то хук не устанавливается в приложения, запущенные "от администратора" (UAC включен). Запустить ее от админа проблем не составляет, но тогда в ход идет проблема №2.

Проблема №2:
Запущенная с правами администратора программа имеет TokenIntegrityLevel = High или System. Это с одной стороны решает проблему №1 - хук внедряется во все приложения на текущем десктопе, но создает следующее препятствие - Microsoft Windows Vista and later. Message posting is subject to User Interface Privilege Isolation (UIPI). The thread of a process can post messages only to message queues of threads in processes of lesser or equal integrity level..

Таким образом, если хук перехватил данные в приложении, запущенном от обычного пользователя(IntegrityLevel=Medium), то в установившую хук программу (IntegrityLevel=High) сообщение не будет отправлено.
Если сделать устанавливающей хук программе IntegrityLevel=Medium или Low, теряется возможность внедрения хука в приложения, запущенные от администратора.

Собственно, вопрос - что можно использовать вместо PostMessage/PostThreadMessage, с учетом необходимости только односторонней связи и малого количества (по объему за 1 передачу) передаваемой информации?


 
Eraser ©   (2009-03-01 01:16) [1]

> [0] Denied   (28.02.09 14:01)

два варианта рещение:
либо 2 хука. либо какой-то другой IPC, например Named Pipes.


 
имя   (2009-03-01 02:19) [2]

Удалено модератором


 
Denied   (2009-03-01 16:54) [3]


> Eraser ©   (01.03.09 01:16) [1]

Устанавливать 2 хука - я так понимаю, что нужно иметь 2 процесса с разным integrityLevel? Вариант, конечно, но слишком сложно получается - в результате нужно будет еще состыковывать и эти 2 процесса :)

> либо какой-то другой IPC
Вот!!! Спасибо огромное!!! Совсем забыл, что кроме сообщений и сокетов есть еще куча способов взаимодействия.
Вопрос только в том, что именно использовать, с учетом того, что обо всем этом я только слышал. Вообще - склоняюсь именно к NamedPipes.
а кошерно ли будет обрабатываться множество соединений из хука с основным приложением, и есть какие-нибудь общие грабли при их использовании (например, с теми же правами доступа)...
Что можно почитать примерное (в смысле - с хорошими примерами, кроме MSDN) ?


 
Eraser ©   (2009-03-01 17:19) [4]

> [3] Denied   (01.03.09 16:54)


> Вообще - склоняюсь именно к NamedPipes.

я бы тоже выбрал этот вариант. просто и быстро. если все грамотно реализовать (что не сложно), то граблей не замечено.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.066 c
15-1263941080
Германн
2010-01-20 01:44
2010.08.27
Отладка программы


15-1270585802
Юрий
2010-04-07 00:30
2010.08.27
С днем рождения ! 7 апреля 2010 среда


2-1274159330
webpauk
2010-05-18 09:08
2010.08.27
Поиск оптимума пересмотром всех значений


15-1273579414
ixen
2010-05-11 16:03
2010.08.27
ExeCryptor и Firebird


3-1239785375
ocean
2009-04-15 12:49
2010.08.27
Как лучше искать по текстовому полю?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский