ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

[Hello boot screen]
  #1  
Старый 30.11.2008, 00:04
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию [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.. Причина: форматирование
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ