Утилита POP4.2: установка Windows 11, версия 26H2 на неподдерживаемые процессоры

344 комментарии
Приложение POP4.2 обходит проверку процессора в Windows 11 и позволяет установить систему на старые неподдерживаемые процессоры, в том числе без поддержки SSE4.2

На этой неделе Microsoft выпустила Windows 11, версия 26H2 для всех пользователей. Для чистой установки или обновления поверх текущей системы можно скачать официальные ISO-образы. Также перейти на новую версию за несколько минут можно с помощью активационного пакета.

Окно сведений о Windows: версия 26H2, сборка ОС 26300.9550

Пользователи неподдерживаемых компьютеров тоже могут обновиться до Windows 11, версия 26H2 с помощью сторонних приложений, например NTLite. Однако два года назад с выходом Windows 11, версия 24H2 Microsoft полностью заблокировала работу системы на части старых процессоров. Компания сделала поддержку инструкций SSE4.2 и PopCnt обязательным требованием. Если процессор их не поддерживал, установка Windows 11 блокировалась, и до сих пор обойти это ограничение не удавалось.

Теперь появилась сторонняя утилита POP4.2, которая позволяет обойти это ограничение в Windows 11, версия 24H2 и 25H2. В новой версии приложения добавлена поддержка Windows 11, версия 26H2. По словам разработчика, утилита должна работать на процессорах, которые поддерживают PopCnt, но не поддерживают SSE4.2. Поскольку SSE4.2, судя по всему, не используется в большинстве файлов Windows, POP4.2 должна позволить установить Windows 11, версия 26H2 на процессоры, поддерживающие как минимум PopCnt. Эта инструкция входит в SSE4a.

Разработчик объясняет принцип работы утилиты так:

Хотя Windows 11 проверяет наличие и POPCNT, и SSE4.2, на самом деле SSE4.2 не требуется для 99% ее файлов – есть лишь несколько исключений, которые можно обойти. Для проверки Microsoft использует недокументированную функцию RtlDetectProcessorFeatures и считывает требования из секции .rdata. В ядре 26100.7171 нужные данные находятся по смещению 00000001400088C0 и в IDA имеют вид 01 00 00 00 00 00 00 00 00 00 10 00 02 00 00 00 0D 00 00 00. Чтобы обойти проверку, достаточно заменить 0D на 0C. В результате Windows фактически пропускает эту проверку и продолжает загрузку.

По сути, автор использовал Interactive Disassembler (IDA) для реверс-инжиниринга механизма блокировки Microsoft. Поскольку исходный код Windows 11 закрыт, разработчик загрузил ядро Windows (ntoskrnl.exe) в IDA, чтобы преобразовать машинный код в более понятное представление на языке ассемблера. Это позволило изучить структуру файла в памяти, найти участок, где Windows проверяет аппаратные требования к процессору, а затем изменить отдельные байты, чтобы обойти строгую проверку совместимости.

Разработчик POP4.2 вместе с энтузиастами протестировал приложение на AMD Phenom X4 9600 – четырехъядерном процессоре 2008 года на базе микроархитектуры AMD K10.

Запуск Windows 11 на процессоре без SSE4.2. Источник: видео канала Bob Pony, на машине которого разработчик тестировал утилиту

Утилита POP4.2 доступна в официальном репозитории на GitHub. Там же опубликованы подробные инструкции по ее использованию и видеоруководство.

Патчить систему можно двумя способами. Первый – собрать из оригинального образа Windows 11 загрузочный ISO с уже внесенными правками. Второй – пропатчить отдельные файлы: ядро ntoskrnl.exe, загрузчик winload.exe и средство подготовки provtool.exe. В обоих случаях разработчик требует заменить библиотеки WindowsCodecs.dll и msxml6.dll версиями из Windows 11, версия 23H2: Microsoft собрала их с инструкциями SSE4.1, и без замены установка завершается сбоем, а приложения не регистрируются в системе.

У приложения есть несколько известных ограничений, о которых предупреждает разработчик. На некоторых чипсетах NVIDIA nForce, которые были широко распространены в те годы, система может зависать. Кроме того, популярные процессоры Intel Core 2 с POP4.2 не работают, поскольку не поддерживают PopCnt.

Рабочий стол Windows 11 на ноутбуке с процессором AMD Athlon II M320 и окно CPU-Z с набором инструкцийWindows 11, версия 25H2 запустилась на ноутбучном AMD Athlon II M320: в списке инструкций CPU-Z есть SSE 4A, но нет SSE4.2. Источник: репозиторий POP4.2

Как пользоваться POP4.2

Готового установщика у POP4.2 нет: это набор файлов из репозитория, который запускается скриптом Python. Перед работой потребуется подготовить компьютер:

  • Windows 8 или новее;
  • Python версии 3.7 или новее с модулем pefile, он ставится командой pip install pefile;
  • Windows ADK с компонентом Deployment Tools ради утилиты oscdimg.exe – если его нет, POP4.2 скачает пакет сама;
  • библиотеки WindowsCodecs.dll (64-разрядная) и msxml6.dll (64- и 32-разрядная) из Windows 11, версия 23H2. Их нужно положить в папку blobs, а 32-разрядную версию msxml6.dll переименовать в msxml6_wow64.dll.

Основной способ, который рекомендует разработчик, – собрать из оригинального образа Windows 11 загрузочный ISO с уже внесенными правками. Образ получается двойным, то есть загружается и в режиме UEFI, и в режиме BIOS:

python pop42.py build -i Win11_24H2_English_x64.iso -o Win11_Patched.iso --clean --index <номер_редакции>

Команда сама запрашивает права администратора: они нужны для монтирования WIM-образа и работы с кустами реестра.

Оригинальный образ Windows 11, версия 26H2 для сборки можно взять со страницы официальных ISO-образов. Актуальные сборки и ссылки на образы собраны в таблице:

Сборка Версия Канал Обновление ISO-образы Доступно

Второй способ – пропатчить отдельные файлы, например для тестирования или для среды Windows PE. Для ядра, загрузчика и средства подготовки используются свои команды:

python pop42.py patch kernel_sse42 -i путь\ntoskrnl.exe -o путь\ntoskrnl_patched.exe
python pop42.py patch winload -i путь\winload.exe -o путь\winload_patched.exe
python pop42.py patch provtool_exit -i путь\provtool.exe -o путь\provtool_patched.exe

Если не указывать параметр -o, исходный файл будет изменен на месте. В репозитории есть и более старый патчер на языке C из папки patcher_legacy, но разработчик считает его устаревшим и советует пользоваться скриптом Python.

Проблемные файлы перечислены в badblobs.xml: для каждого указаны путь и действие – патчить, заменить или пропустить. При необходимости список можно дополнить своими файлами. Исходный код POP4.2 распространяется по лицензии MIT.

Автор:
Комментарии и отзывы

Нашли ошибку?

Новое на сайте