Получить информацию о чужом окне
Всё, что можно выцепить через FindWindow, отображается либо в Spy++ (пункт Tools в меню студии либо в Process Explorer.
Ну ему, как я понял, триггер на это дело нужен.
SetWindowHookEx ?
![](/images/graemlins/wink.gif)
Если серьезно: а вдруг окно принадлежит другому пользователю? К примеру, на локальной машине сидит ограниченный пользователь и он сможет что-то нопесать окну проги с правани "супер-пупер"?
Честно, стало интересно, как в винде обстоит с правами срать что-то окну?
![](/images/graemlins/blush.gif)
Честно, стало интересно, как в винде обстоит с правами срать что-то окну?AFAIK так же
можно срать сколько вздумается
Обстоит дело плохо. Т.е. в чужое окно посылать сообщения можно. Признано багом by design
Не видел ни одного хака, использующего этот якобы баг, а лично мне эта штука сэкономила массу времени в написании тестовых программ.
Дык. Дело в том, что этот хак дает (причем негарантировано) возможность локально повысить свои привилегии на terminal server-е. Это достаточно редкая ситуация, для того, чтобы такие хаки были распространенными и общеизвестными.
Например, троян может подождать, пока юзер сделает Run As, чтобы получить админские привилегии. Или воспользоваться готовыми привилегироваными программами для этой цели if any.
Таких хаков в дикой природе нет, потому как трояну не нужны админские права, чтобы сделать, что ему обычно надо - создать зомби.
Да, согласен. В любом случае всегда проще прислать письмо с темой "сиськи внутри". Можно даже считать, что у открывшего присланный .exe-шник админские права. В 90% случаях это окажется правдой.
Самое реальное применение - это имхо корпоративные сети. Там должно быть дофига вкусных корпоративных приложений, написанных программистом Васей. Но и там проще шефу аттач мылом послать, подделав обратный адрес.
Если взять реальность, то во множестве корпораций даже упомянутый хак просто не нужен. Мой опыт показывает, что либо ситуация такова, что все рюхающие люди находятся в it отделе и имеют права администратора домена (т.е. ломать просто некому). Либо ситуация совершенно дикая, когда админский пароль от базы знает любой рядовой пользователь (при этом, впрочем, ни разу не было, чтобы базу кто-то потер. Ибо не рюхает никто).
Мой опыт показывает, что либо ситуация такова, что все рюхающие люди находятся в it отделеБудем считать, что враг внедрил агента, который притворился ламером, чтоб его взяли работать. Естественно, в багтраке про такой случай вряд ли напишут, что частично объясняет скептицизм некоторых.
От этого такие корпорации не защищены. Впрочем, если есть чего украсть, то есть и СБ, которая по ручкам надает.
Впрочем, если есть чего украсть, то есть и СБ, которая по ручкам надает.Отрежут яйца кому-нибудь из IT, да и всё.
![](/images/graemlins/laugh.gif)
А вот если одно окно создано локальным приложением, а другое - пришло с терминал-сервера, то как там со взаимодействием?
так не бывает.
пришло с терминал-сервера,То, что мне нарисовали окошко, которое на самом деле на терминал сервере, ничего плохого не сделает. Дело в том, что идеология terminal server отлична от X Server. В иксах, окошки живут на клиентском компе, на котором запущен X Server, а сообщения и управление осуществляется серверной машиной, на которой запущен X Client. Это хорошо малым временем отклика и небольшим трафиком. Зато начинается геморрой (впрочем, решаемый когда надо соединиться с сервером, а сам сидишь за NAT-ом. В Remote Desktop-е же на клиенте идет только передача картинки и отсылка реакции пользователя типа: нажата мышка в координатах (x, y) нажата клавиша "Ы". Таким образом, понятия "пришло с терминал сервера" нет
насколько я помню, там основная дырка - это когда сервис запускается в интерактивном режиме.
ps
и, конечно, в более редкой ситуации, когда приложение запускается через runas с увеличенными правами в юзерской сессии.
Только, во-первых, слышал ещё про published applications, но походу, это только у Citrix, а MS это не скопировали. Правда, ещё я слышал, что Citrix используется в большинстве компаний Fortune 500 или типа того.
![](/images/graemlins/laugh.gif)
В Remote Desktop-е же на клиенте идет только передача картинки и отсылка реакции пользователя типа: нажата мышка в координатах (x, y) нажата клавиша "Ы".А во-вторых, не только картинки и кнопки. Буфер обмена, например, ещё. Вдруг и сообщения ходят, я ж не знаю.
![](/images/graemlins/smile.gif)
буфер обмена там не всегда ходит. Вроде, для этого надо, чтобы были подключены диски. Еще может ходить музыка и принтеры.
по умолчанию, через буфер обмена не ходят файлы, потому что через буфер обмена передаются ссылки, а не сами файлы.
соответственно для того, чтобы через буфер обмена ходили файлы - необходимо подключать диски.
Наблюдал, что буфер обмена для текста начинает работать после подключения дисков. Правда, там firewall еще мог немного мешаться.
![](/images/graemlins/smile.gif)
![](/images/graemlins/smile.gif)
SetWindowHookEx (WH_CBT, ...)
Хук вызывается при работе с окнами (создание, уничтожение)
В функции-фильтре есть указатель на структуру окна, откуда можно выцепить хэндл окна
Мне нравится ваше мышление, господа Виндузятнечги! Честно, мне бы так.
Если серьезно: а вдруг окно принадлежит другому пользователю? К примеру, на локальной машине сидит ограниченный пользователь и он сможет что-то нопесать окну проги с правани "супер-пупер"?
Честно, стало интересно, как в винде обстоит с правами срать что-то окну?
Задачу не требуется решать в общем случае.
Вкратце, для чего это нужно:
Я пишу драйвер, который перехватывает нажатия клавиш. Далее програ определяет, кто "нажал" клавишу - человек или клавиатурный ридер магнитных карт (по интервалу между сообщениями). Если человек - то с небольшой задержкой (незаметной для человека) эти события воспроизводятся. Если ридер - сообщения уничтожаются и генерируется некоторое событие.
Проблема возникла в том, что если открыто окошко MessageBox, переэмулированные моим драйвером сообщения (SendMessage) не всегда "доходят" до окошка. В частности, нельзя закрыть Messagebox Энтером или Esc'пом. Поэтому я решил отслеживать появление таких окошек и выключать драйвер пока окошко не закроется.
Еще программист вася написал программу отслеживания объектов на видеокартинке. Для этой цели он запускал стандартную программу, идущую в комплекте с камерой, которая оверлеем выдавала картинку на экран, а потом эту самую картинку прямо из видеопамяти и считывал. Один раз программа показала огромного размера объект, находящийся в неположенном месте, и имеющий явно враждебные намерения по отношению к ГУ ЦБ РФ по Орловской области. Когда пришли разбираться, оказалось, что этим объектом был мессадж бокс с аксесс виолэйшыном. Васина программа считала его из видеопамяти вместе с картинкой.
Оставить комментарий
Corrector
Прога знает handle чужого окна. Надо определить, когда в этом окне откроется стандартный виндоусовский MessageBox (и ему подобные) и когда закроется. Как это можно сделать?