R0 CREW

Neffarion :: 0xs6 :: Цель - Windows XP Boot Screen (Перевод: coldfire)

0xs6 :: Цель - Windows XP Boot Screen

Введение

Экран загрузки Windows является частью ядра Windows XP. Однако, несмотря на то, что это продукт MS, ресурсы в нем немного обфусцированы. В этом уроке мы будем проходить через весь процесс реорганизации экрана загрузки Windows.

Информация о цели

Имя… ntoskrnl.exe [ c:\windows\system32 ]
Разработчик… Microsoft
Инструменты… PE Explorer [ download ], XVI32, IrfanView [ download ], Adobe Photoshop [ download ]

Adficio

1-а. Загружаем исследуемый объект в PE Explorer b. Выбираем пункт меню "View => Resources" c. Выбираем "Bitmap => 1"

Рис. 1. Экран загрузчика Windows XP

Ресурс “1” - это каринка, которую вы можеет видеть, когда появляется экран загрузки с разрешением 640х480. Причина по которой она черная является защита с названием скрытая радуга (это не официальное название, мне просто захотелось ее так назвать).

Защита скрытая радуга – простая защита для изображений:

  • Изображение загрузилось (не должно иметь цветовую палитру)
  • Цветовая палитра внутри исследуемого объекта
  • Цветовая палитра применяется для изображения
  • Изображение рисуется в соответствии с цветовой палитрой.

Я не буду вдаваться в подробности формата медиа-ресурсов в этом уроке, но вы можете на это смотреть так: Художник рисует картину на белом холсте только рисует контуры. Когда он начинает закрашивать картину, он держит палитру цветов и просто закрашивает области между всеми очертаниями. Черная картинка представляет «белый холст» , а когда бутскрин применяет цветовую палитру к этому изображению, представляющего саму картину :slight_smile:

У ДОСа есть лимит на качество загружаемого изображения, поэтому перед тем как мы сделаем новое изображение, оно должно иметь следующую спецификацию:

  • Ширина: 640
  • Высота: 480
  • Разрешение по горизонтали: 71 точек на дюйм
  • Разрешение по вертикали: 71 точек на дюйм
  • Разрядность: 32 (4 бита на pixel/16 цветов)

Иммейте ввиду , что вы не сможете сделать что-то неворяетное для вашего бутскрина, так как доступно всего 16 цветов из возможно спектра цветов :frowning:

2 - a. Откроем Adobe Photoshop b. Выбираем пункт меню "File => New" b. Созать a 640x480 8-bit изображение

Рис. 2. Новый экран загрузчика

Вы можете создать все что хотите, но имейте ввиду, что если вы используете слишком много 3д графики ваше изображение не будет выглядеть красиво, поскольку позже мы будем вынуждены изменить палитру цветов по умолчанию на 16 цветов палитры. Ниже вы можете увидеть мое изображение:

Рис. 3. Мой дизайн загрузчика

4 - a. Сохраните ваше изображение как a 24-bit bmp

Рис. 4. Сохранение вашего изображения

Теперь мы перейдем к IrfanView для того что бы отрегулировать наше изображение и сделать его «готовым для загрузки» :wink:

5 - a. Откройте ваше изображение в IrfanView (File => Open)

Рис. 5. Ваша картинка в IrfanView

6 - a. Выберите пунк меню “Image => Decrease Color Depth”
b. Выберите the “16 colors (4 BPP)” option
c. Нажмите OK

Рис. 6. Уменьшение глубины цвета ( иначе: уменьшить спектр цветовой палитры )

Качество изображения упадет, но только если вы использовали очень много цветов/ресурсов, то изображение будет выглядеть отлично :slight_smile:

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

7 - a. Выберите пункт меню "Image => Palette => Export palette" b. Сохраните файл как "W32bl.pal"

Рис. 7. Сохранение вашей цветовой палитры

8 - a. Сверните IrfanView и откройте “W32bl.pal”

Рис. 8. W32bl.pal

Формат “.pal” – стандартный формат цветовой палитры широко используемые во всей сети и Рис. 8 объясняет каждый его аспект.
Значения в нашей цветовой палитре представлены в значениях RGB (Red, Green, Blue), но мы должны знать их шестнадцатеричные значения , что бы изменить цветовую палитру бутскрина.

9 - a. Откройте IrfanView и выберите пункт меню "Image => Palette => Edit"

Рис. 9. Редактирование цветовой палитры

Данное окошко позволяет нам менять цвета нашей цветовой палитры изображения, но оно всего лишь отображает шестнадцатеричные значения каждого цвета.

10 - a. Нажмите на первый цвет (слева – самый первый), запишите значение перед "HTML" рядом с 4й строчкой в "W32bl.pal" разделенные пробелом на каждые 2 номера ((шестнадцатеричные значения идут в парах) b. Повторите шаг 10 - для каждого цвета в цветовой палитре, пока у вас не получится такой результат:

Рис. 10. W32bl.pal с шестнадцатеричными значениями

Пришло время сделать изображение полностью черным, потому что цветовая палитра будет изменена внутри нашего исследуемого объекта и она применится сама программой :slight_smile:

11 - a. Двойной клик на каждом цвете и измените цвет на черный

Рис. 11. Очистка цветовой палитры

Теперь ваше изображение будет черным.

12 - a. Сохраните черное изображение как "Image_1" (перезапишите если это необходимо)

Рис. 12. Сохранение нового изображения

Мы заменим изображение в исследуемом объекте на новое изображение сейчас.

13 - a. ВPE Explorer замените ресурс "BMP => 1" на наше (черное) изображение

Рис. 13. Замена оригинально изображения

14 - a. Сохраните программу под новым именем (например “zxp.exe”)

Рис. 14. Замена оригинально ресурса

Наше новое ядро (которое я называю "zxp.exe) по-прежнему имеет оригинальную цветовую палитру в ней, поэтому мы должны использовать “W32bl.pal”, чтобы создать его заново:)

15 - a. Откройте "zxp.exe" в XVI32

Рис. 15. Zxp.exe в XVI32

Когда вы ищете данные, такие как цветовая палитра, нужно следить за ходом своих мыслей. Редко когда вы сможете найти что либо, что напоминающее блок цветой палиты в дебаггере, но часто это можно легко сделать используя хекс редактор. Нам не надо искать спецефические цвета цветовой палитры изображения, потому мы уже знаем их, т.к. когда когда Windows XP была выпущена,его Bootscreen был выпущен в качестве отдельного растрового изображения, которое графические дизайнеры такие как могут извлечь.

Когда мы знаем цвета цветовой палитры изображение и смотря на файл “W32bl.pal” мы видем, что псоле каждого цвета идет новая строчка ("\n") (каждый цвет находится на отдельной строке и, таким образом новая строка - разделитель). В шестнадцатеричные виде данные строки представляются как “00”.

16 - a. Нажмите на пункт меню "Search => Find" b. Выберите "Hex string" option c. Search for "00 00 00 00 15 1A 20 00 46 46 46 00 D2 3E 2D 00 01 65 53 00 05 35 B2 00 7E 7E 7E 00 00 92 89 00 FC 7F 5E 00 20 6B F7 00 FF A6 8D 00 04 DC 8E 00 1B BC F3 00 BC BC BC 00 FC FC FC 00 FF FF FF"

Рис. 16. Поиск цветовой палитры по умолчани.ю

Первый цвет - “00 00 00” (черный) с переходом на новую строку (“00”).

Рис. 17. Цветовая палитра по умолчанию

Так как наша цветовая палитра должна быть фоном, то мы должны записать нашу цветовую палитру как фон это приложения. В моей цветовой палитре все значение совпадают с фоном, но если вы использует цвета вида “FC7F5E” вы должны записать как “5E 7F FC” в хекс редакторе.

18 - a. Начиная с "00 00 00" напечайте первый цвет вашей цветовой палитры(backwards) b. Ставьте "00" после каждого цвета (4я позиция) c. Повторите пункт 18 для каждого цвета палитры

Рис. 18. Новая цветовая палитра

Существует 2 способа загрузка с вашего нового модифицированого ядра:

  • Отредактировать файл the “boot.ini”
  • Загрузится в Защищенном режиме и перезаписать оригинальный исследуемый объект только что созданным.

Я предпочитаю использовать первый метод, т.к. это более безопасный вариант

19 - a. Переходим System Properties ( Свойства системы) > Advanced ( Дополнительно) b. Нажмите Edit

Рис. 19. Настройки загрузки

Рис. 20. Редактирование Boot.ini

21 - a. Скопируйте последнюю строку
b. Выберите пункт меню “File => Save”

Рис. 21. Новый boot.ini

+Neffarion
http://www.0xNeff.eu

© Translated by coldfire from r0 Crew