Доброго времени суток! Решил создать отдельную тему для своей утилиты SystemResearch Проект на ранней стадии, много чего задумано и реализуется по мере свободного времени. Сборки с новым функционалом буду выкладывать в этой теме. Основной упор на код и оптимизацию сделан для Windows 10/11, но также тестирую работу программы в Windows 7. Поддерживаются только 64 битные ОС. Среда разработки и компилятор - Pelles C (версия 12.00.2) Состав программ: 1. SystemResearch.exe - основная программа 2. UI0Detect.exe - сервис (служба) для перехода в терминальную сессию (SessionId = 0) 3. Wls0wndh.dll - вспомогательная подпрограмма для возврата из терминальной сессии 4. FDUI0Input.sys - драйвер для устройств ввода-вывода в терминальной сессии Инструкция по установке для Windows 10/11: 1. Файлы UI0Detect.exe и Wls0wndh.dll необходимо поместить в папку Windows\System32 2. В SystemResearch.exe нажать кнопку Create UI0Detect Service 3. Установить драйвер FDUI0Input.sys через FDUI0Input.inf 4. Перезагрузить компьютер Перечислять все функции думаю смысла нет, всё интуитивно понятно. Списки с процессами и сервисами активируются по двойному щелчку мыши. Правой кнопкой мыши осуществляется обновление списков из контекстного меню. Также в программе реализованы всплывающие подсказки при наведении на определенные строки с выведенной информацией. Язык программы - английский. Из необычных особенностей - специально реализовывал открытие дескрипторов с минимально возможным набором прав. Интересно наблюдать как на это реагируют различные процессы. Например процесс csrss.exe - единственный процесс, который не показывает идентификатор сессии если не включена привилегия SeDebugPrivilege у вызывающего процесса. В свою очередь для юзермодных процессов можно включать привилегию SeSecurityPrivilege (т.к. используется флаг ACCESS_SYSTEM_SECURITY) заместо SeDebugPrivilege. Помимо прочего, при включении в Windows 10/11 изоляции ядра, подключаются гипервизор и два безопасных процесса - Secure System и LsaIso.exe с соответствующим уровнем доверия (Virtual Trust Level). Если Secure System является защищенным процессом, то LsaIso.exe спокойно отдаёт свои дескрипторы вызывающему процессу уровня системы. Это создаёт некоторое поле для маневра. В общем пока так. По мере свободного времени буду обновлять функционал программы.
С релизом Windows 11 23H2 (build 22631) драйвер FDUI0Input.sys перестал работать (как и предыдущие на предыдущих обновлениях ОС). Проблема ребят из FireDaemon в том, что они продолжают упорно привязывать свой драйвер к рабочему столу Default. При этом механизм переключения в терминальную сессию (winsta.dll) устроен таким образом, что переход осуществляется на рабочий стол Winlogon. Отсюда и все беды. Ждём следующего обновления драйвера. Пришлось переделать сервис UI0Detect под современные реалии: теперь подпрограмма для возврата из терминальной сессии Wls0wndh.dll запускается на рабочем столе Winlogon. При переключении в терминальную сессию вы увидите окно с кнопкой, но взаимодействовать с ним не сможете через клавиатуру и мышь. Сами клавиатура и мышь активируются ровно через 180 сек. (заложено в самой системе в драйвере win32kfull.sys), но взаимодействовать всё равно нельзя. Чтобы вернуться нужно: либо делать хардресет с кнопки и перезагружать ПК, либо написать программу с таймером, по истечение которого автоматически сработает механизм возврата. Загрузить такую программу можно через SystemResearch.exe (соответствующие коррективы для создания системных процессов в терминальной сессии я внёс). Данное обновление небольшое, немного нового функционала, оптимизация кода и исправление небольших багов. Теперь можно добавлять права Sacl и Dacl в вызывающий процесс для получения доступа к информации, содержащийся в этих Acl (будет реализовано позже). Также следует учитывать - Dacl для защищённых процессов получить пока что невозможно. Доработал механизм снятия защиты с сервисов. Обратите внимание: для снятия защиты с сервиса нужно, чтобы владельцем (owner) вызывающего процесса была СИСТЕМА (соответственно запуск с токеном Trusted Installer Token). Если у вас Windows 11 22H2 (build 22621) и более старые ОС новый (временный) файл сервиса UI0Detect.exe качать не нужно.
Давно не обновлял свою утилиту SystemResearch (за это время много всего пофиксено, улучшено, добавлено нового функционала). Доработал полностью функционал по управлению сервисами\службами Защита с сервиса снимается если утилита запущена с токеном Trusted Installer и после перезапуска сервиса, процесс будет запущен без защиты. Но это касается не всех сервисов, а только части: Разобрался почему не работала терминальная сессия и в частности клавиатура\мышь. Оказалось встроенный в Windows 11 SuperVisor (изоляция ядра и памяти) блокировал драйвер FDUI0Input.sys Добавил функционал по распознаванию супервизора и последующий запрет на переход в терминальную сессию. Соответственно вернул правильные рабочие станции и рабочие столы для утилит UI0Detect.exe и Wls0wndh.dll Следующий этап - таблицы SACL и DACL.
UbIvItS, драйвер FDUI0Input.sys не мой. Это разработка FireDaemon https://kb.firedaemon.com/support/solutions/articles/4000123189 Несколько раз я им помогал в тестировании и нахождении багов. А так, ещё в 2016 году, был опыт с EV сертификацией на сайте MS (LiveID аккаунт имеется). INF-файл, CAT-каталог, набор утилит (signtool, inf2cat, makecab). Далее предлагалось скачать файл winqual.exe и подписать его своим сертификатом, загружал на сервак для проверки валидности цифровой подписи. Как сейчас это работает не скажу точно, давно уже драйверами не занимаюсь.