В последние месяцы недостатки производительности Windows 11 от Microsoft вызвали множество критики, которая усилилась после того, как пользователи обнаружили работающую в фоновом режиме службу Windows Health and Optimized Experiences. Углублённый анализ этой службы показывает, что за её относительно простым назначением скрывается гораздо больший функционал.

Специалист по реверс‑инжинирингу Сюшэн Ли решил внимательнее изучить whesvc, службу, стоящую за Windows Health and Optimized Experiences. Ранее завирусилось утверждение о том, что Microsoft добавила службу, которая отслеживает информацию о процессоре, температуре и батарее, а затем отправляет данные в компанию каждые 15 минут.
Как ранее объяснил инженер Microsoft Скотт Хансельман, на самом деле эта служба предназначена для сбора целевой диагностической информации о производительности, когда Windows обнаруживает медленную работу. Собранные данные хранятся локально и могут быть отправлены через Центр обратной связи.
Расследование Ли в значительной степени подтверждает это, но также показывает, что реализация Microsoft на удивление сложна. Служба whesvc на самом деле довольно небольшая. Интересная функциональность скрыта в файле windiag.dll, который содержит встроенный скриптовый язык Lua 5.4.7. Microsoft также поставляет файл whesvc_assets.dll, содержащий 84 скомпилированных скрипта Lua, обрабатывающих различные сценарии диагностики.
Ли обнаружил, что скриптовый движок предоставляет доступ к 79 собственным функциям, что даёт скриптам Microsoft доступ к удивительно широкому спектру возможностей Windows.
Например, служба может читать и изменять реестр Windows, выполнять произвольные операции с файлами, создавать процессы и взаимодействовать с ними, запрашивать WMI (Windows Management Instrumentation), собирать трассировки событий для Windows (ETW), проверять токены безопасности, получать информацию о питании и температуре, загружать символы, создавать файлы.cab и даже выполнять HTTP‑запросы.
Кроме того, существует универсальный интерфейс внешних функций (FFI), позволяющий скриптам взаимодействовать с собственными DLL и различными дескрипторами Windows. Таким образом, на бумаге это делает базовый движок значительно более мощным, чем, казалось бы, необходимо для службы диагностики производительности.
Однако это не означает, что Microsoft тайно использует службу для манипулирования случайными файлами или записями реестра. Ли обнаружил, что поставляемые скрипты, как правило, используют эти возможности для довольно обыденных диагностических задач.
Функциональность реестра в основном используется для поддержания собственных счетчиков службы между перезапусками. Модуль информации о драйверах может изменять параметры Windows Driver Verifier, хотя это ограничено определённой переменной среды и используется функцией мониторинга памяти. Ли предполагает, что это, пожалуй, наиболее инвазивная функция whesvc.
Один скрипт использует его для запуска собственного инструмента Microsoft powercfg.exe и генерации отчёта. Другой путь вызывает wpr.exe для объединения трассировок Windows Performance Recorder.
Сами диагностические скрипты также довольно сложны, поскольку служба может собирать трассировки, когда приложения перестают отвечать, отслеживать задержки ввода и сбои отображения, идентифицировать приложения, которые запускаются медленно, и обнаруживать службы, застрявшие в состоянии ожидания. Её модули, связанные с питанием, могут исследовать чрезмерный разряд батареи, определять, что помешало ПК перейти в спящий режим, и реагировать на длительное потребление энергии.
Например, модуль memory_handle_leak, как следует из названия, занимается диагностикой утечек памяти, отслеживая количество памяти и дескрипторов в течение нескольких интервалов и используя последовательные увеличения наряду с наклоном линейной регрессии для различения потенциальной утечки памяти от нормального роста.
А модуль system_summary создает упомянутую выше 900-секундную или 15-минутную JSON‑сводку, но она хранится локально. Несмотря на наличие у сервиса сетевых возможностей, Ли не обнаружил ни одного сценария, который бы фактически выполнял произвольные HTTP‑запросы. Среди всех 84 скриптов единственным идентифицированным URL‑адресом является общедоступный сервер символов Microsoft, и эта функциональность, как утверждается, отключена в обычных розничных установках Windows.
Реверс‑инженер говорит, что искал что‑то подозрительное, но ничего не нашёл. Сервис не ведёт скрытую запись экрана, и его диагностические трассировки не загружаются автоматически в Microsoft, как предполагалось в вирусных утверждениях.
По сути, Microsoft создала универсальный механизм системной диагностики, работающий от имени SYSTEM, с возможностями, варьирующимися от работы с реестром и файлами до создания процессов и выполнения нативного кода. Поставляемые скрипты остаются в рамках диагностики производительности, но лежащий в их основе механизм значительно превосходит требования задачи. Однако это не означает, что это «шпионское ПО».
Между тем в Windows Central протестировали Low Latency Profile в Windows 11, который предназначен для ускорения работы меню «Пуск», поиска и Центра уведомлений за счёт повышения частоты процессора в момент взаимодействия с командной оболочкой. Профиль позволил ускорить работу даже мини‑ПК Lenovo ThinkCentre M700 с процессором Intel Core i3-6100 6-го поколения и 8 ГБ оперативной памяти.
Источник: habr.com