Доступ к терминальной сессии (Session 0) после обновления 22H2
Запись от _lunar_ размещена 08.02.2023 в 12:40
Показов 7331
Комментарии 0
|
Дополнительная информация и аттач для скачивания тут Давно я ничего не писал в блоге, да и ценности в жизни меняются - занимаюсь кодингом всё меньше и меньше, но окончательно бросить всё же не могу (после стольких лет моего увлечения программированием). А сподвигло меня на новый анализ ядра ОС не так давно выпущенное обновление Windows версии 22H2 (для 10 и 11 версий ОС). В своём проекте Kernel Explorer я занимался организацией бесплатного доступа к терминальной сессии - и мне это удалось. Я спроектировал сервис UI0Detect (подобный сервису в Windows Vista, 7, 8, 10 до билда 1709, а с 1803 этот сервис был жестко вырезан майкрософтом). В конечном итоге принял решение о публикации исходного кода проекта Kernel Explorer на сервисе GutHub (принадлежащего MS). Но оставил исходный код службы UI0Detect закрытым и не стал выкладывать сурки в паблик. Думаю в Microsoft покопались в исходном коде моего проекта и немного прифигели от того, что я спокойно предоставил пользователям доступ туда, куда они его запретили начиная с Windows 10 1803. Поэтому в версии ядра 22H2 было внесено много чего нового. Эти изменения естественно "неожиданным" образом коснулись и Kernel Explorer и драйвера от ребят из FireDaemon, предоставляющего возможность работать в терминальной сессии мышкой и клавиатурой. Но как ни странно изменения не коснулись сервиса UI0Detect, сурки которого я не выкладывал (совпадение?). Мой сервис UI0Detect как работал, так и работает. В последствии от FireDaemon было выпущено предупреждение Если будет использоваться драйвер FireDaemon ZeroInput в Windows 11 22H2 вы получите цикличный BSOD. Поэтому не применяйте и не развертывайте этот драйвер в Windows 11 22H2!!! Соответственно и функционал Kernel Explorer, отвечающий за терминальную сессию работал с ошибками. Вносить изменения мне очень не хотелось про причинам, описанным в самом начале этого блога. Да и развертывать студию я не хотел. Какое-то время назад я работал в IDE под названием Pelles C - чистый Си, есть отладчик, редактор ресурсов и всё что нужно для написания программы. Да она кажется устаревшей в плане интерфейса, отсутствия нормальной подсветки синтаксиса и умной подстановки впечатываемых слов, в общем всем тем, к чему привыкли юзеры VS. Решил немного освежить в памяти работу с этой IDE. И в итоге написал Kernel Explorer второй версии в облегчённом виде На данный момент инструмент проходит тестирование, и как только доработаю оставшийся функционал, выложу для паблика. Но написать программу это одно, а вот чтобы она работала в новой версии Windows это уже другой вопрос. Пришлось изучить изменения в ядре ОС. И вот что обнаружилось. Главным изменением в принципе перехода в терминальную сессию стало то, что основным рабочим столом стал Winlogon (заместо рабочего стола Default). В этом и проблема. В предыдущих блогах я уже упоминал о том, что рабочий стол Winlogon лишен практически всех функций
Запихиваем этот драйвер в дизассемблер и видим вот такую картину Драйвер ребят из FireDaemon просто жестко завязан на рабочий стол Default, отсюда и проблемы совместимости с 22H2 и цикличный BSOD. Позже может быть напишу им в саппорт и объясню как решить проблему. Но вернёмся к моему новому проекту. На данный момент я спокойно осуществляю переход в терминальную сессию, создаю там процессы и они отображаются и работают вполне корректно. Но есть проблема с выходом обратно в пользовательскую сессию. Т.к. драйвер клавиатуры и мыши не работает, приходится просто смотреть на выполнение программ, которые я тестирую и делать жесткий ресет компа. |
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии


