Вниз
Скачать: CL | DM;

Хуки и 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.062 c
11-1195764794
tigra
2007-11-22 23:53
2010.08.27
kol-synapse


15-1269725156
pleasure
2010-03-28 00:25
2010.08.27
Role-Based Security Rules UI


2-1273148921
ИванВ
2010-05-06 16:28
2010.08.27
ScrollBar


2-1267108150
Alex___
2010-02-25 17:29
2010.08.27
Как работать с бестиповой переменной?, func(VAR BUF;...)


15-1270974403
ПарамПамПам
2010-04-11 12:26
2010.08.27
OLE




   Наверх