Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #81, СЕНТЯБРЬ 2005 г.

Пингвин на операционном столе

Крис Касперски ака мыщъх

Хакер, номер #081, стр. 081-102-1


Модифицируем стандартный логотип Linux

Кому не хотелось хакнуть ядро Linux? Каждый уважающий себя линуксоид должен попробовать это сделать! Ведь Linux, в отличие от Windows, настоящий полигон для хакерства, таящий в себе неожиданные возможности. Взять хотя бы лого, появляющееся на экране. Пришла пора изменить его по своему вкусу.

[введение]

«Хаками» (hacks) называются всякие хитрости, забавные шутки и оригинальные приемы, тогда как под «хакерством» (hacking) традиционно понимается взлом программ или сетевые атаки. Вроде бы похожие термины, а какая разница! Эта статья открывает целый цикл публикаций, рассказывающих о том, что крутого можно сделать с ядром Linux. И начнем мы с относительно простой задачки - изменение логотипа при загрузке операционной системы.

[меняем лого]

Обычно при загрузке Linux появляется характерный пингвин, которым уже никого не удивишь, и который уже довольно сильно поднадоел. Хочется чего-нибудь новенького. Как изменить стандартное лого на что-то свое? Есть несколько путей.

Начнем с компиляции ядра. За отображение лого ответственны следующие файлы: /usr/src/linux/drivers/video/* и /usr/src/linux/include/linux/linux_logo.h. Всякий раз, когда ядро загружается в отладочном (debug) или молчаливом (quiet) режиме, эти файлы (конечно же, в откомпилированном виде) получают управление и выводят изображение на экран. Само лого обитает в файле linux_logo.h, где оно хранится в виде обыкновенного массива данных, кусочек которого для наглядности приведен ниже.

Фрагмент файла linux_logo.h, содержащий logo

unsigned char linux_logo_bw[] __initdata = {

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x3F,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,

0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFE, 0x3F, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xC7, 0xFF, 0xFF,

Изменять его можно как вручную, так и автоматически. Ручной режим мы трогать не будем, поскольку ничего интересного в нем нет (сплошная рутина), гораздо проще запустить специальную утилиту - она все сделает сама. В отличие от мира Windows, погруженного в корпоративный мрак, в котором бродят зубастые монстры, под Linux народ исходники не зажимает, и мы можем легко проанализировать, что делает та или иная программа, и нужно ли это нам. Не стоит забывать, что вмешательство в ядро всегда чревато фатальными последствиями. Один неверный шаг - и система отказывается загружаться или уничтожает все данные жесткого диска под чистую. Поэтому перед всякой установкой потенциально небезопасной программы необходимо пролистать ее исходный текст и посмотреть, какие именно файлы она изменяет. Остается только зарезервировать их на дискету, болванку или флешку, а загрузиться всегда можно с Live CD.

Мы будем использовать утилиту logo, которую можно скачать с демократичного бельгийского сервера: members.chello.be/cr26864/Linux/fbdev/logo.tar.bz2. Распаковав архив, мы обнаружим три Си-файла и один makefile. Двоичных файлов, увы, нет, и их приходится компилировать самостоятельно. Поддерживаются две версии ядер - с номерами 2.2 и 2.4. Для версии 2.6 нужен особый подход, о котором мы чуть позже и поговорим, а пока вернемся к нашей текущей задаче.

Содержание  Вперед на стр. 081-102-2