[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Голубой экран выбранного цвета.
LolitopДата: Пятница, 11.02.2011, 13:58 | Сообщение # 1
Группа: Пользователи
Сообщений: 196
[ 14 ]
Пару слов от переводчика:

Менять что либо в тексте Марка Руссиновича, просто не подымается рука, но сделать несколько комментариев все же необходимо:

1. Данный пост написан 14 декабря, перед Рождественскими каникулами;
2. В переводе данной статьи термины «дебаггер» и «отладчик» используются, как абсолютные синонимы – хотя к использованию терминов отношусь очень серьезно, но это издержки перевода.
3. Понятие «Голубого экрана» используется в кавычках, чтобы не путать термин с конкретным цветом

Итак, декабрьский пост Марка Руссиновича.

Заметка: для более простого и быстрого способа настройки цвета «Голубого экрана», смотри мой следующий пост «Дизайнер Голубого экрана в один клик». (Январский пост Марка Руссиновича)

Наблюдать за «Голубым экраном» не синего цвета – дискомфортное занятие, даже для меня, и, уже зная реакцию аудитории конференции TechEd, бьюсь об заклад, что Вы очень сильно удивите своих друзей и знакомых, продемонстрировав им «Голубой экран» произвольного цвета. Впервые я увидел, как Дэн Персон сделал это в аварийном дампе, он выступал пару лет назад с Давидом Саломоном и сейчас завершил мою презентацию, названную «Дело о необъясненном», тем, что выкрасил «Голубой экран» в цвет, который выбрала аудитория (реакцию зрителей можно, например, услышать в конце этого ролика). Отмечу, что менять цвет «Голубого экрана» я собираюсь вручную – надо только пережить загрузочную сессию, предназначенную для демонстрации, а не для общей настройки «Голубого экрана». И не забудьте посмотреть, какой выходной «Голубому экрану» я подготовил для Вас в завершении этого поста.

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

Так как Вы собираетесь модифицировать код ядра, то первый шаг – это предоставление возможности редактирования кода ядра в памяти, если такая опция еще не включена. Windows систем с менее чем 2 Гб оперативной памяти использует 4KB страницы для хранения кода ядра, это наиболее подходящая защита для информации, представленной в этих страницах. Например, страницы с данными ядра должны быть доступны как для чтения, так и для записи, в то время как - код ядра должен только считываться и исполняться. Подобная оптимизация помогает увеличить скорость перевода виртуальных адресов, Windowsиспользует большие страницы (4 MBв x86 и х64) в системах с большей памятью. Это значит, что если на странице код ядра и данные ядра, то к такой странице должен быть разрешен доступ для чтения, записи и исполнения. Таким образом, чтобы иметь возможность редактировать страницы, Вам следует разрешить Windows использовать страницы большего объема. Если у Вас WindowsXPили Server 2003 с менее чем 256 МБ, или WindowsVistaили более поздняя версия с 2 или менее гигабайтами оперативной памяти, задайте REG_DWORD значение, называемое LargePageMinimum, равное 1, по адресу в реестре HKLM\System\CurrentControlSet\Control\SessionManager\MemoryManagement:

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

Если у Вас 64-битная WindowsVista или более поздняя версия, Вам необходимо перезагрузить систему в режиме отладки (Debugmode), чтобы запустить отладчик ядра в «локальном» режиме. Сделать это можно двумя способами: нажав F8 во время загрузки системы и выбрав «Отладочную загрузку» или выбрав «Отладчика» в конфигурации системы, используя утилиту Msconfig:

Затем перезагрузите систему и включите дебаггер (debugger - отладчик) с правами администратора (если контроль учетных записей (UAC) включен, зайдите, как администратор). Укажите дебаггеру на сервер символа Microsoft, открыв диалог пути поиска символа, который располагается ниже меню File, и введите строку srv*c:\symbols*http://msdl.microsoft.com/download/symbols (замените c:\symbols на любой локальный каталог, в котором Вы хотите, чтобы дебаггер заменил символы). Затем откройте диалог отладчика ядра, вызвав его из меню File, перейдите на вкладку Localи нажмите OK:

Последующие шаги зависят от того, какая у Вас система: 32- или 64-битная, Vista или более новая.
32-битнаяWindows XP и Windows Server 2003

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

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

64-битные версии Windowsи 32-битные WindowsVistaили более старшие версии.

В данных версиях Windows, функция, которая закрашивает «Голубой экран», называется KiDisplayBlueScreen. Набирайте «ukidisplaybluescreen», и затем, вводя «u» листайте страницы функции, до тех пор пока не увидите вызов InbvSolidColorFill. Для 32-битных версий Windowsпродолжайте выполнять инструкции, которые даются для WindowsXP/Server 2003: ищите и редактируйте значение цвета. Для 64-битных версий этих операционных систем, инструкция, которая предшествует InvbSolidColorFill, передает цвет, копируйте адрес (номер в левой колонке), и вводим его в команду: «eb <адрес>+4». Дебаггер войдет в режим редактирования памяти, и Вы сможете изменить значение (например 1 – красный, 2 – зеленый…):

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

Сейчас все готово, чтобы уронить систему. Если у Вас 64-битная система, Вы можете уронить ее без различных дополнений. Это возможно, потому что патч защиты ядра зафиксирует модификацию и крах системы в качестве предупреждениядля разработчиков, которые могут изменять код ядра, чтобы изменить поведение последнего. Хотя, может пройти несколько минут, прежде чем система рухнет. Для создания краха системы по требованию, запустите Notmyfault (этот инструмент, написанный для книги «Windowsизнутри», можно скачать отсюда) и нажмите на кнопку «DoBug» (во избежание потери данных, убедитесь, что сохранили свою работу и закрыли все приложения):

Сейчас Вы увидите «Голубой экран», раскрашенный в цвет, который Вы выбрали, в данном случае у нас красный экран смерти:
Выходной для «Голубого экрана»

Воодушевленный предстоящими выходными, я решил развить дальше тематику отдыха для «Голубого экрана»: я решил, что было бы не плохо модифицировать не только цвет фона, но и цвет текста. Для того, чтобы это сделать в 64-битной версии WindowsVista или более поздней версии, отметьте вызов функции InvbSetTextColor, сразу же следующей за InvbSolidColorFill, и адрес инструкции, передающей цвет текста функции, «moveecx, 0Fh».

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

И вот какой праздничный «Голубой экран» у меня получился:

Удачных выходных! И помните, если у Вас возникнут какие-то трудности, с которыми Вы решите поделиться, пожалуйста, присылайте мне скриншот (в формате *.NPG) и лог-файл.
Еще одна заметка переводчика:

Даю список цветов и значений, которые задают цвет

* 0 черный (а что? не плохая идея для экрана смерти)
* 1 синий
* 2 зеленый
* 3 голубой
* 4 красный
* 5 пурпурный
* 6 желтый/коричневый
* 7 белый
* 8 серый
* 9 ярко-синий
* A ярко зеленый
* B ярко-голубой
* C ярко-красный
* D ярко-пурпурный
* E ярко-желтый
* F белый

Изучайте статью – на самом деле, за ее кажущийся простотой скрыта одна (а может, и не одна) задумка, за которую хакер будет хвататься руками и ногами, чтобы только воплотить в жизнь, но не буду Вас лишать творческого полета мысли. Творите, на основе прочитанного, да прибудет с Вами сила.

  • Страница 1 из 1
  • 1
Поиск: