[Ответить в тред] Ответить в тред

03/04/16 - Набор в модераторы 03.04 по 8.04
26/03/16 - Конкурс: Помоги гомункулу обрести семью!
15/10/15 - Набор в модераторы 15.10 по 17.10


[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 24 | 23 | 2
Назад Вниз Каталог Обновить

Туттуру, двачик! Я начал Аноним 22/05/16 Вск 22:14:12  127442669  
14639444523780.png (980Кб, 1600x900)
Туттуру, двачик!
Я начал изучать книгу "Использование Windows Driver Model", 2003-го года издания. У меня есть маленький опыт погромирования (именно погромирования) на С-подобных языках. Писал полезные только для себя утилиты. Должен сказать, что моя основная профессия никак не связана с программированием, и с компьютерами вообще.
Зачем мне это? Да просто так, хочется изучить новые вещи.
Почему не использовать новый стандарт от Microsoft - Windows Driver Foundation? Для меня это сложно.
Если анону интересна данная тема, то будет продолжение. По мере того, как я буду читать книгу, а в ней почти 800 страниц. Если есть желание заниматься этим вместе со мной-добро пожаловать, пиши на мэйл prepare.yr.anus собачка gmail.com.
Аноним 22/05/16 Вск 22:17:11  127443046
14639446315300.png (582Кб, 651x438)
буду бампать киберпанком
Аноним 22/05/16 Вск 22:18:10  127443166
14639446902760.jpg (46Кб, 728x400)
14639446902761.jpg (76Кб, 622x439)
Что мне понадобится?
1) Oracle Virtual Box с установленной на ВМ Windows XP. Почему ХР, это говно мамонта? Потому что она не требует от драйвера цифровой подписи. Конечно, можно Windows 7 заставить загрузить неподписанный драйвер, для этого нужно много телодвижений.
2) Установленный на ВМ Windows Kriver Kit версии 7. Эта версия, кстати, подходит для операционных систем до Windows Server 2008
3) Набор из двух утилит: Dbgview.exe и INSTDRV.EXE. Можно скачать отсюда, trojans included, kekeke https://drive.google.com/file/d/0B4VU1az7IrixQUFTSFhHSXNGRk0/view?usp=sharing
Аноним 22/05/16 Вск 22:19:53  127443369
14639447932770.jpg (255Кб, 868x1226)
Аноним 22/05/16 Вск 22:20:59  127443517
14639448598630.jpg (525Кб, 3000x1412)
Аноним 22/05/16 Вск 22:21:55  127443631
14639449155270.jpg (43Кб, 400x534)
Аноним 22/05/16 Вск 22:25:01  127443999
14639451021370.jpg (261Кб, 1680x1050)
Аноним 22/05/16 Вск 22:27:13  127444275
14639452339860.jpg (579Кб, 1900x1064)
Аноним 22/05/16 Вск 22:30:53  127444745
14639454531740.gif (196Кб, 500x304)
Сегодня я напишу простейший драйвер. Типа hello world. Драйвер, понимаешь, это то же приложение, как блокнот, например. Только исполняется он в нулевом кольце, самом привелигированном. Таким образом, на драйвер ложится огромная ответственность. Ибо при сбое драйвера есть шанс утянуть ОС в синий экран. Поэтому лучше использовать ВМ.
Итак, драйвер WDM должен иметь обязательно функцию DriverEntry, это как функция main() в обычных с-программах. Собственно говоря, это единственное обязательное требование.
Крайне желательно иметь в драйвере функцию DriverUnload, которая будет заниматься очисткой ресурсов драйвера при выгрузке его из памяти. В моем примере функция DriverEntry занимается тем, что заполняет структуру объекта драйвера, приветствует и возвращает успешный результат выполнения. Структура объекта драйвера имеет много полей, которые мне пока не нужны.
Аноним 22/05/16 Вск 22:33:08  127445034
14639455884240.jpg (327Кб, 1200x937)
Аноним 22/05/16 Вск 22:34:33  127445224
14639456739500.jpg (473Кб, 1920x1080)
Неужели никому не интересно?
Аноним 22/05/16 Вск 22:36:23  127445458
14639457833740.jpg (60Кб, 570x900)
Аноним 22/05/16 Вск 22:37:30  127445587
14639458506380.jpg (45Кб, 700x461)
бамп святым Фордом
Аноним 22/05/16 Вск 22:39:25  127445821
Собственно, вот код самого простого драйвера, который ничего не умеет, только говорит "Привет" и "Пока". Не знаю, будет ли он хорошо отображаться на двачике.

#include "ntddk.h"
VOID OnUnload(IN PDRIVER_OBJECT DriverObject)
{
DbgPrint("On Unload\n");
}

NTSTATUS DriverEntry (IN PDRIVER_OBJECT theDriverObject, IN PUNICODE_STRING theRegistryPath)
{
DbgPrint("Hello World!\n");
theDriverObject->DriverUnload = OnUnload;
return STATUS_SUCCESS;
}
Я думаю, лучше создать директорию для проектов. Важно, чтобы имя директории не содержало пробелы и табуляцию. Сохрани этот код под именем "simpledriver.c". Помимо файлов источников проект драйвера должен иметь еще как имниум два файла: sources и makefile, оба без расширений.

Содержимое sources:
TARGETNAME=SIMPLEDRIVER
TARGETPATH=OBJ
TARGETTYPE=DRIVER
SOURCES=simpledriver.c

И содержимое makefile
!INCLUDE $(NTMAKEENV)\makefile.def
Самые ленивые могут скачать исходники для ОС Windows XP SP3 x86 https://drive.google.com/file/d/0B4VU1az7IrixNEM2MnJHdWE4WGc/view?usp=sharing
Аноним 22/05/16 Вск 22:40:46  127446009
14639460467610.jpg (361Кб, 727x727)
>>127445821
все же не очень. надо убрать символы табуляции "\t"
Аноним 22/05/16 Вск 22:42:11  127446177
14639461311380.jpg (262Кб, 1280x809)
Аноним 22/05/16 Вск 22:46:12  127446791
14639463727920.jpg (376Кб, 2048x1536)
Аноним 22/05/16 Вск 22:47:45  127447012
14639464650730.jpg (79Кб, 900x599)
Аноним 22/05/16 Вск 22:48:36  127447136
14639465163550.png (7Кб, 671x332)
Теперь у меня есть все, что нужно для создания драйвера. Запускаю компилятор "Start\Все программы\Windows Driver Kits\WDK 7600.16385.1\Build Environments\Windows XP\x86 Checked Build Environment". Если другая ОС, соответственно, нужно выбрать другое. Есть еще x86 Free Build Environment, но это не важно, если не надо запускать драйвер в другой ОС.
Перехожу в директорию с проектами. Компилятор запускается одной командой - build
При успехе в директории "objchk_wxp_x86\i386" появляется файл драйвера simpledriver.sys
Аноним 22/05/16 Вск 22:52:04  127447698
14639467242060.jpg (11Кб, 236x280)
14639467242061.jpg (74Кб, 812x850)
Аноним 22/05/16 Вск 22:54:24  127448058
14639468650320.jpg (290Кб, 1280x1280)
Аноним 22/05/16 Вск 22:55:58  127448292
14639469587000.gif (1794Кб, 400x522)
Аноним 22/05/16 Вск 22:56:58  127448438
14639470183580.png (3Кб, 306x155)
14639470183581.png (9Кб, 781x627)
Очередь за утилитами, о котрых я упомянул ранее. Для начала надо запустить Dbgview, дабы увидеть сообщения от драйвера. Неоходимо включить отображение сообщений ядра (capture kernel). С помощью InstDrv мой драйвер устанавливается (Install) и запускается (Start). Если в поле status появляется "operation was successfull", то все хорошо.
Dbgview должен был уже отобразить приветствие, которое мой драйвер выводит с помощью функции DbgPrint. Если нажать Stop в InstDrv, то мой драйвер отобразит еще и сторку "On Unload", перестанет функционировать и выгрузится из памяти.
Аноним 22/05/16 Вск 23:01:00  127449016
14639472600900.jpg (56Кб, 578x366)
Собственно говоря, это все. Очень жаль, что никто не заинтересовался этим. Было бы прикольно освоить книгу и технологию, соревнуясь с аноном. Но нет так нет
Аноним 22/05/16 Вск 23:11:28  127450574
>>127449016
Рряя, Оп очередной титан одиночества?

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 24 | 23 | 2
Назад Вверх Каталог Обновить

Топ тредов