Хотелось бы внести ясность по теме окон, дабы не возникло путаницы. Как ни как, а виндовый гуй моя любимая тема
Ядро системы никаких окон выводить не будет. Кроме разве что BSOD.
Ну начнем с того, что все-все-все окна, которые видны на экране, создаются именно в ядре с помощью shadow-сервиса NtUserCreateWindowEx(). Думаю это и так всем ясно. Но вот что примечательно - вызвать этот сервис в ринг0 не выйдет, там стоит проверка на PreviousMode. Т.е. получается занятная картина - все окна создаются конечно же ядром, но инициировать создание окна может только юзермодный код. ...Попутно: БСОД это далеко не окно.
Много ли ты можешь вспомнить интерактива от ядра системы?
Например, при попытке загрузить бракованный EXE-файл, или EXE-файл, у которого не резолвятся импорты, появляются окна именно из R0
Обычно весь ядерный интерактив сводится к уведомлению пользовательского приложения о том, что надо "показать окошко/спросить о чем-то". И этим грешат не только сторонние продукты, но и непосредственно само ядро. Яркий пример тому наличие такой фишки, как NtRaiseHardError, которая не просто может вывести MsgBox из ядра, но и даже вернуть результат (какая кнопочка нажата). Естественно, окно MessageBox'а создается в юзермоде (конкретно в csrss до Win7), но без большой натяжки можно сказать - ноги у таких окон растут из ядра. Это как раз то, о чем говорил
Хакер.
что эти окна выглядят не как все (и ведут себя не как все: плевать они хотели на Z-ордер и изменения оконной среды, и Spy++ их не видит), логично предположить, что и окна показываются из R0.
А по-моему совсем даже не логично. Создать такое окно можно с легкостью и в юзермоде (вызови MessageBox в контексте winlogon'a с флагом MB_DEFAULT_DESKTOP_ONLY). Но пальцем в небо ты попал.
А я все практикую лечение травами...