Рисую демонической кровью
-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет) Недавно смотря гайды на форуме, не увидел не одного про драйвера, ну чтож я стану первым)
- Содержание
- Начало
- Разбор кода
- Загрузка драйвера
- Установка необходимого
- Visual Studio
- WDK |
- Windows SDK |
- Создание и настройка проекта
Создаем пустой проект кернел драйвера
- Настройка
Свойста проекта -> C/C++ -> Общие
Снижаем уровень предупреждений на 3.
Выключаем "Обработка предупреждений как ошибки"
-> Создание кода
Отключаем "Spectre Mitigatin"
Далее заходим в "Driver Signing" и выставляем "Test Certificate" -> "Create New"
На этом наша настройка окончена.
- Разбор кода
Имортируем "ntddk.h"
Данный хедер содержит в себе структуры, функции необходимые для ядра. Подробнее -
Точкой входа драйвера является DriverEntry.
Определяем тип NTSTATUS, для создания точки входа.
Передаваемые параметры:
- PDRIVER_OBJECT Driver_Object - Содержит множество указателей для драйвера.
- PUNICODE_STRING RegistryPath - Регистрация драйвера в реестре
- Вывод текста
Использовать мы будем DbgPrintEx - " отправляет строку в отладчик ядра, если выполняются указанные условия". Подробнее -
Передаваемые параметры:
- ComponentId - Указывает компонент, вызывающий эту подпрограмму. Это должен быть один из идентификаторов фильтров имен компонентов.
- Level - Указывает серьезность отправляемого сообщения. Это может быть любое 32-разрядное целое число. Значения от 0 до 31 (включительно) обрабатываются по-разному, чем значения от 32 до 0xFFFFFFFF.
return STATUS_SUCCESS - Т.к тип NTSTATUS должен возвращать значение, при успешном выполнение, вернём статус SUCCESS.
Компилируем драйвер.
- Загрузка драйвера в систему
Загрузить драйвер можно несколькими способами:
- Через маппер
- Через утилиту sc
Мы воспользуемся 2 методом.
Перед запуском драйвера отключите проверку подписи сертификата.
Запускаем cmd от имени администратор, переходим в папку с вашим драйвером.
Выполняем команды:
- SC CREATE <название_драйвера> binPath= <путь_до_sys_файла> type=kernel
- Запуск: sc start <название_драйвера>
- Отслеживание выводов
Для отслеживания могу посоветовать - dbgView, с такими настройками.
- Содержание
- Начало
- Разбор кода
- Загрузка драйвера
- Установка необходимого
- Visual Studio
- WDK |
Пожалуйста, авторизуйтесь для просмотра ссылки.
- Windows SDK |
Пожалуйста, авторизуйтесь для просмотра ссылки.
- Создание и настройка проекта
Создаем пустой проект кернел драйвера
- Настройка
Свойста проекта -> C/C++ -> Общие
Снижаем уровень предупреждений на 3.
Выключаем "Обработка предупреждений как ошибки"
-> Создание кода
Отключаем "Spectre Mitigatin"
Далее заходим в "Driver Signing" и выставляем "Test Certificate" -> "Create New"
На этом наша настройка окончена.
- Разбор кода
Имортируем "ntddk.h"
imports:
#include <ntddk.h>
Пожалуйста, авторизуйтесь для просмотра ссылки.
Точкой входа драйвера является DriverEntry.
Определяем тип NTSTATUS, для создания точки входа.
entry:
NTSTATUS DriverEntry(IN PDRIVER_OBJECT Driver_Object, IN PUNICODE_STRING RegistryPath);
- PDRIVER_OBJECT Driver_Object - Содержит множество указателей для драйвера.
- PUNICODE_STRING RegistryPath - Регистрация драйвера в реестре
- Вывод текста
print:
NTSTATUS DriverEntry(IN PDRIVER_OBJECT Driver_Object, IN PUNICODE_STRING RegistryPath) {
DbgPrintEx(0, 0, "Hello World!\n");
return STATUS_SUCCESS;
}
Пожалуйста, авторизуйтесь для просмотра ссылки.
.Передаваемые параметры:
- ComponentId - Указывает компонент, вызывающий эту подпрограмму. Это должен быть один из идентификаторов фильтров имен компонентов.
- Level - Указывает серьезность отправляемого сообщения. Это может быть любое 32-разрядное целое число. Значения от 0 до 31 (включительно) обрабатываются по-разному, чем значения от 32 до 0xFFFFFFFF.
return STATUS_SUCCESS - Т.к тип NTSTATUS должен возвращать значение, при успешном выполнение, вернём статус SUCCESS.
Компилируем драйвер.
- Загрузка драйвера в систему
Загрузить драйвер можно несколькими способами:
- Через маппер
- Через утилиту sc
Мы воспользуемся 2 методом.
Перед запуском драйвера отключите проверку подписи сертификата.
Перезагружаем винду с зажатым шифтом.
Выбираем "поиск и устранение неисправностей" -> параметры загрузки.
Далее выбираем функцию отключающую проверку подписи.
Выбираем "поиск и устранение неисправностей" -> параметры загрузки.
Далее выбираем функцию отключающую проверку подписи.
Запускаем cmd от имени администратор, переходим в папку с вашим драйвером.
Выполняем команды:
- SC CREATE <название_драйвера> binPath= <путь_до_sys_файла> type=kernel
- Запуск: sc start <название_драйвера>
- Отслеживание выводов
Для отслеживания могу посоветовать - dbgView, с такими настройками.
THE END?