Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

30.11.2008, 00:04
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
[Hello boot screen]
[Hello boot screen!]
[System]
Windows XP (SP3,SP2)
[Intro]
Где-то видела статью - не статью, заметку-не заметку про то, что при старте винды на экран можно вывести инфу с помощью функции
VidDisplayStringXY из bootvid.dll. Мне стало интересно, каким образом можно вывести какое-либо изображение. Проникшись этим делом, я написала простенький дров, который как раз-таки выводит на экран при загрузке винды надпись хелло. Возможно, это дело будет кому-то интересно
[Let's go]
Путем недолгих поисков нашла функцию VidSolidColorFill
Код:
VOID
VidSolidColorFill(
ULONG x1,
ULONG y1,
ULONG x2,
ULONG y2,
ULONG color
);
Эта функция так же экспортируется bootvid.dll.
Она закрашивает прямоугольную область (x1,y1) - координата левого верхнего угла, (x2,y2) - координата правого нижнего угла. color - цвет. Вообще прямоугольники вещь великая. Нарисуем прямоугольниками HELLO.
Итак, теперь откомментированный код функции... Она показывает надпись hello и 5 раз меняет цвет фона и надписи. Задержка
функцией KeDelayExecutionThread...
Я подписала где начинается какая буква для читабельности. Две буквы L в одном цикле для сокращения размеров кода. Так же как три горизонтальные палочки у буквы E и две вертикальные у H.
Код:
// Функция, выводящая надпись HELLO во время загрузки винды. Драйвер должен быть заинсталлен как boot!
// bg_color (color) + c - изменение цвета - так веселее)))
extern "C" VOID SayHello(ULONG x,ULONG y,ULONG color,ULONG bg_color){
int i,c;
LARGE_INTEGER s_time;
s_time.QuadPart = -10000000;
for(c=0;c<6;c++){
//фон
VidSolidColorFill(
0,
0,
800,
600,
bg_color+c
);
// буква Н
for(i=0;i<2;i++){
VidSolidColorFill(
x+i*40,
y,
x+20+i*40,
y+100,
color+c
);
}
VidSolidColorFill(
x+20,
y+40,
x+40,
y+60,
color+c
);
// буква Е
VidSolidColorFill(
x+80,
y,
x+100,
y+100,
color+c
);
for(i=0;i<3;i++){
VidSolidColorFill(
x+100,
y+i*40,
x+120,
y+20+i*40,
color+c
);
}
// две L
for(i=0;i<2;i++){
VidSolidColorFill(
x+160+i*80,
y,
x+180+i*80,
y+100,
color+c
);
VidSolidColorFill(
x+180+i*80,
y+80,
x+220+i*80,
y+100,
color+c
);
}
//O
// две вертикальные палочки
for(i=0;i<2;i++){
VidSolidColorFill(
x+320+i*40,
y,
x+340+i*40,
y+100,
color+c
);
}
//две горизонтальные палочки
for(i=0;i<2;i++){
VidSolidColorFill(
x+340,
y+i*80,
x+360,
y+20+i*80,
color+c
);
//Делаем задержку
KeDelayExecutionThread(KernelMode,FALSE,&s_time);
}
}
}
Вышеприведенный код надо вставить в драйвер и вызвать
Код:
SayHello(60,40,9,7);
например так.
в качестве аргументов кодес принимает начальные координаты x и y, цвет надписи и фона.
Итак, что же получилось?
а)до
http://img141.imageshack.us/my.php?image=dopi1.jpg
б)после
http://img136.imageshack.us/my.php?image=hello1lv3.jpg
и
http://img136.imageshack.us/my.php?image=hello2of9.jpg
[Compilation]
Для самостоятельной компиляции драйвера вам конечно потребуется DDK и либа bootvid.lib, для тех кому ее лень искать - положила в архив с сорцами и бинарем по ссылке ниже. Повторяю - драйвер должен быть инсталлирован как BOOT, иначе толку не будет.
Примечание: рекомендуется подобные извращения тестить на эмуляторе, а не на живой машине, что собственно я и делала.
[Download]
http://rapidshare.com/files/168641900/bootgraph.rar.html
(c)november 0x0c0de 2008
Последний раз редактировалось 0x0c0de; 30.11.2008 в 07:27..
Причина: форматирование
|
|
|

30.11.2008, 00:21
|
|
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме: 379101
Репутация:
136
|
|
Классная вещь.
Есть вопрос:
инсталировать как BOOT - как можно сделать?
|
|
|

30.11.2008, 00:25
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
Вот так ~
Код:
SC_HANDLE hSCM = OpenSCManager(0,0, SC_MANAGER_ALL_ACCESS);
SC_HANDLE hSRV = CreateService(hSCM, имя_сервиса, имя_сервиса,SERVICE_ALL_ACCESS,SERVICE_KERNEL_DRIVER,SERVICE_BOOT_START,SERVICE_ERROR_NORMAL,путь_к_драйверу, 0, 0,0, 0, 0);
-----------добавлено-------
и еще забыла сказать - дров положите в
\windows\system32\drivers\ и заинстальте
Последний раз редактировалось 0x0c0de; 30.11.2008 в 14:08..
|
|
|

01.12.2008, 11:30
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
осталось ядерный pbrush зарелизить 
__________________
 
snow white world wide
|
|
|

08.12.2008, 20:38
|
|
Новичок
Регистрация: 08.12.2008
Сообщений: 8
Провел на форуме: 4529
Репутация:
1
|
|
Вижу юзал Windows XP game edition норм сборка, даже boot урезан 
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|