Изменяем цвет «Синего экрана смерти» BSOD

Экран BSoD с цветом, отличающимся от синего может смутить кого угодно, и я готов поспорить, что вам было бы интересно подобрать свой цвет и потом показать его своим друзьям. Стоит отметить, что описанные мной шаги для изменения цвета BSoD проделываются вручную и затрагивают только сеанс загрузки, так что они подходят для демонстраций, а не для общей настройки BSoD.

17.12.2010 00:08,

Подготовка системы

Поскольку нам придется изменить код ядра, первый шаг заключается в разрешении редактировать код ядра в памяти, если это ранее не было сделано. Системы Windows с менее чем 2 Гб ОЗУ используют страницы объемом 4 Кб для хранения кода ядра, благодаря чему можно обеспечить необходимый уровень защиты для содержимого. Например, страницы данных ядра должны разрешать доступ на чтение и запись, в то время как код ядра должен предоставлять доступ только для чтения и выполнения.

В рамках оптимизации, которая позволяет увеличить скорость трансляции виртуальных адресов, Windows использует большие страницы (4 Мб на x86 и x64) на больших системах. Это означает, что если в странице хранится и код, и данные, то эта страница должна представлять доступ на чтение, запись и выполнение; так что для того, чтобы гарантировать возможность редактирования страницы, вы должны обеспечить использование Windows больших страниц.

Если у вас Windows XP или Windows Server 2003 и менее 256 Мб ОЗУ, или Windows Vista или старше и есть 2 Гб ОЗУ или меньше, создайте значение REG_DWORD с названием LargePageMinimum, которое установлено в 1, в ветке реестра HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management:

Изменяем цвет «Синего экрана смерти» BSOD

Чтобы вам не надо было спешить похвастаться результатами своей работы пока Windows автоматически не перезагрузится после сбоя, измените настройки автоперезагрузки. На Windows XP и Server 2003 щелкните правой кнопкой мыши на значке «Мой компьютер», выберите вкладку «Дополнительно» и нажмите кнопку «Параметры» в разделе «Загрузка и Восстановление».

На Windows Vista и выше щелкните правой кнопкой мыши на значке «Компьютер» в меню Пуск, выберите «Свойства», нажмите «Дополнительные параметры системы», перейдите на вкладку «Дополнительно» и нажмите кнопку «Параметры» в разделе «Загрузка и Восстановление». Снимите флажок с параметра «Выполнять автоматическую перезагрузку»:

Изменяем цвет «Синего экрана смерти» BSOD

Если вы работаете на 64-разрядной версии Windows Vista или выше, вам нужно загрузить систему в режиме отладки, чтобы можно было запустить отладчик ядра в режиме «local». Вы можете сделать это либо нажав F8 во время загрузки системы и выбрав режим отладки, либо поставив флажок «Отладка» в утилите «Конфигурация системы» (Msconfig):

Изменяем цвет «Синего экрана смерти» BSOD

Далее перезагрузите систему и запустите отладчик с правами администратора. Настройте отладчик на сервер символов Microsoft, открыв диалоговое окно «Symbol Search Path» из меню Файл и введите следующую строку: srv*c:\symbols*http://msdl.microsoft.com/download/symbols (замените c:\symbols на путь к локальной папке, в которой отладчик должен хранить кэшированные символы). Далее откройте диалоговое окно «Kernel Debugging" из меню Файл, выберите вкладку «Local» и нажмите OK:

Изменяем цвет «Синего экрана смерти» BSOD

Следующие шаги отличаются в зависимости от того, работаете вы с 32-разрядной или 64-разрядной Windows и от версии Windows.

32-разрядная Windows XP и Windows Server 2003

Функция, которая отображает BSoD на этих операционных системах, называется KeBugCheck2. Вы ищите место, где функция передает значение цвета функции, которая заливает фон экрана – InbvSolidColorFill. Введите команду «u kebugcheck2», чтобы вывести начало функции, затем вводите команду «u», чтобы пролистать дополнительные страницы кода функции до тех пор, пока вы не увидите ссылку на InbvSolidColorFill (после первого ввода «u», вы можете просто нажать Enter, чтобы повторить команду). Вам нужно будет пропустить 30-40 страниц до того, как вы увидите этот запрос:

Изменяем цвет «Синего экрана смерти» BSOD

Перед этим запросом вы увидите инструкцию «push», использующую в качестве аргумента 4, как показано на рисунке выше. Скопируйте адрес кода этой инструкции, выбрав его из столбца адреса слева и нажав Ctrl+C. Затем в командном окне отладчика введите «eb», затем Ctrl+V, чтобы вставить адрес, затем "+1» и нажмите Enter. Отладчик войдет в режим редактирования памяти, начиная с адреса значения цвета. Теперь вы можете выбрать цвет, который вы хотите. 1 – это красный, 2 – зеленый, вы также можете поэкспериментировать, чтобы получить другой цвет. Просто введите число и нажмите Enter дважды, чтобы подтвердить ввод, после чего выйдите из режима редактирования. Вот как примерно должен выглядеть экран, после того как вы закончите:

Изменяем цвет «Синего экрана смерти» BSOD

64-разрядные версии Windows и 32-разрядные версии Windows Vista или выше

На этих версиях Windows функция ядра для отрисовки BSoD называется KiDisplayBlueScreen. Введите «u kidisplaybluescreen» и затем продолжайте вводить команды «u», чтобы пропустит страницы с кодом функции, до тех пор, пока вы не увидите вызов InbvSolidColorFill. На 32-разрядных версиях Windows продолжите следование инструкциям, приведенным в разделе Windows XP/Server 2003, чтобы найти и отредактировать значение цвета.

На 64-разрядных версиях этих операционных систем инструкция, предшествующая вызову InvbSolidColorFill, передает цвет, так что скопируйте ее адрес (номер в левой колонке) и введите эту команду для начала редактирования: «eb <address>+4». Отладчик перейдет в режим редактирования памяти, и вы сможете изменить значение (например, 1 для красного, 2 для зеленого):

Изменяем цвет «Синего экрана смерти» BSOD

Просмотр результата

Теперь вы готовы к сбою системы. Если вы работаете на 64-разрядной Windows, вы можете вызвать сбой без каких-либо дополнительных действий. Kernel Patch Protection заметит модификацию и вызовет сбой системы как средство сдерживания деятельности независимых вендоров, которые могли бы решить подправить код ядра, чтобы изменить его поведение. Однако на это может понадобиться несколько минут.

Чтобы вызвать сбой системы по требованию, запустите утилиту Notmyfault (вы можете скачать ее с веб-страницы Windows Internals) и нажмите кнопку «Do Bug» (чтобы избежать потери данных, убедитесь, что вы сохранили любую работу и закрыли все другие приложения):

Изменяем цвет «Синего экрана смерти» BSOD

Появится BSoD в цвете, который вы выбрали, в данном случае это «красный экран смерти»:

Изменяем цвет «Синего экрана смерти» BSOD

Праздничный BSoD

В духе наступающих праздников, я сделал еще один шаг и создал праздничный BSoD: я поменял не только цвет фона, но и цвет текста. Чтобы сделать это на 64-разрядных версиях Windows Vista или выше, найдите вызов InvbSetTextColor сразу после InvbSolidColorFill и адрес инструкции, которая передает цвет текста функции, «move ecx, 0Fh»:

Изменяем цвет «Синего экрана смерти» BSOD

Параметр 0Fh означает белый цвет, но вы можете изменить его, используя все ту же методику редактирования. Используйте команду «eb», передавая адрес инструкции плюс 1. Ниже я установил красный цвет (который имеет значение 1):

Изменяем цвет «Синего экрана смерти» BSOD

А вот и праздничный BSoD, который я создал:

Изменяем цвет «Синего экрана смерти» BSOD

Счастливых вам праздников! И помните, если у вас были какие-либо случаи диагностики проблем, которыми вы хотите поделиться, пожалуйста, присылайте мне скриншоты (предпочтительно .PNG) и файлы лога.

Оцените материал:  
(Голосов: 21, Рейтинг: 3.85)

Каждый вечер мы будем присылать вам одно письмо со всеми опубликованными за день материалами. Нет материалов - нет писем, просто и удобно (другие варианты).

Материалы по теме


Комментарии (3)

Vlad-00003, 14.04.2013 09:42
Вам нужно авторизоваться, чтобы голосовать Вам нужно авторизоваться, чтобы голосовать

Гениально! Только вот непонятно одно - зачем?) чтобы радоваться появление bsod? или приколоться на кем-нибудь?))
красным по зелёному читать же неудобно=)
Гениально! Только вот непонятно одно - зачем?) чтобы радоваться появление bsod? или приколоться на кем-нибудь?)) красным по зелёному читать же неудобно=)

Мимо проходил, 31.05.2013 01:40
Вам нужно авторизоваться, чтобы голосовать Вам нужно авторизоваться, чтобы голосовать

ИМХО хороший IT-специалист должен думать над тем, как снизить количество появлений "экрана смерти", а не над тем, как сделать их повеселее.
ИМХО хороший IT-специалист должен думать над тем, как снизить количество появлений "экрана смерти", а не над тем, как сделать их повеселее.

uuser, 19.12.2014 23:36
Вам нужно авторизоваться, чтобы голосовать Вам нужно авторизоваться, чтобы голосовать

Неплохо. Напишите еще про варианты с нечитаемым текстом на bsod - на некоторых компьютерах набор символов вместо текста.
Неплохо. Напишите еще про варианты с нечитаемым текстом на bsod - на некоторых компьютерах набор символов вместо текста.