|
Заблокирован
|
|
Нужен пример простейшего драйвера на C/C++. Visual Studio 2008/новее. Win 8 x64, можно и XP x86 (а лучше оба)19.03.2015, 01:49. Показов 40524. Ответов 121
Метки нет (Все метки)
Совсем хорошо будет, если этот драйвер будет еще и делать что-то хоть как-то заметное юзером
![]() И совсем замечательно, если будет еще и вкратце объяснено, как его установить на обеих ОС ![]() P.S. Да-да, ![]() Добавлено через 43 секунды И да, можно в принципе и не VS 2008, а что-то еще, хоть MinGW. Только тогда попрошу пояснить, какая у вас версия того компилятора и как его юзать. Добавлено через 1 минуту VS только Express, так что VisualDDK, к сожалению, никак не пойдет...
1
|
|
| 19.03.2015, 01:49 | |
|
Ответы с готовыми решениями:
121
Как установить Windows 10 x64 (после обновления с Win 7 x86 до Win 10 x86) сохранив лицензию
Разработка драйвера в Visual Studio 2008 |
|
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 38
|
|
| 11.05.2016, 19:46 | |
|
0
|
|
|
Ушел с форума
|
|
| 11.05.2016, 20:29 | |
|
Значит, .sys-файла нет на месте.
Часто так бывает на 64-битной Windows, когда файл кидают в C:\Windows\system32\drivers, а на самом деле из-за редиректа он оказывается в C:\Windows\SysWow64\drivers.
0
|
|
|
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 38
|
|
| 23.05.2016, 20:38 | |
|
Подскажите, не пойму как дальше быть
Когда драйвер написан, скомпилирован, нужно еще написать программу, которая иллюстрирует его работу, которая вызывает этот драйвер. Я не совсем пойму, как это будет, если не сложно объясните максимально доступно, что должна представлять собой программа, которая вызывает драйвер и иллюстрирует его работу Спасибо.
0
|
|
|
Ушел с форума
|
|
| 23.05.2016, 20:50 | |
|
Это зависит от того, что умеет делать драйвер. Обычно взаимодействие программы и
драйвера строится на базе стандартной схемы ввода-вывода: драйвер создает именованное устройство и символьную ссылку на него (IoCreateDeviceSecure + IoCreateSymbolicLink), а также реализует обработчики IRP_MJ_CREATE, IRP_MJ_DEVICE_CONTROL, IRP_MJ_CLEANUP и IRP_MJ_CLOSE, после чего приложение может открывать его через CreateFile и слать запросы - DeviceIoControl. Например, можно в драйвере собирать какую-нибудь интересную системную информацию и отдавать по запросу в юзермодное приложение.
0
|
|
|
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 38
|
||||||
| 26.05.2016, 23:10 | ||||||
|
Подскажите пожалуйста, компиляция прошла успешно, а вот при попытке запуска выдает ошибку 31(на скрине)Это значит на более ранних версиях винды оно только работать будет или как?
0
|
||||||
|
Ушел с форума
|
||
| 27.05.2016, 10:06 | ||
|
только и всего. В данном коде параметры PsSetCreateProcessNotifyRoutine неправильные.
0
|
||
|
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 38
|
|
| 27.05.2016, 20:34 | |
|
Изменил TRUE на FALSE в аргументах, служба успешно запущена, но в ДбгВью не выводит отладочные сообщения
0
|
|
|
Ушел с форума
|
|
| 28.05.2016, 07:47 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 38
|
|
| 28.05.2016, 14:54 | |
|
Ничего не менялось, запускаю от имени администратора,стоит галочка, но выводит какие-то сообщения периодически, но с того драйвера, что я запускаю не выводит ничего...
0
|
|
|
Ушел с форума
|
|
| 28.05.2016, 15:32 | |
|
А что-нибудь кроме DbgView пробовал? Я, например, этой утилитой вообще сейчас не пользуюсь.
Просто перевожу систему в режим отладки (bcdedit.exe) и подключаюсь WinDBG через com/pipe. Там еще один флажок в реестре надо прописать - Debug Print Filter. P.S. Убери звездочку перед MyCreateProcessNotifyRoutine. Странно, что вообще не падает...
0
|
|
|
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 38
|
|
| 28.05.2016, 20:32 | |
|
Спасибо, сейчас попробую,
Добавлено через 30 секунд Та то я пробовал даже не тот пример, просто банально два сообщения при загрузке и выгрузке драйвера сделал Добавлено через 4 часа 27 минут А можете объяснить как нужно правильно использовать функцию ZwCreateFile, что бы проверить есть ли файл на флешке, а то не получается совсем с ней...
0
|
|
|
Ушел с форума
|
|
| 30.05.2016, 10:50 | |
|
Можешь попробовать ZwOpenFile, она для этой цели проще (т.к. меньше параметров).
Только не вызывай ее напрямую из нотификатора на запуск процессов, потому что на время его выполнения отключена доставка APC, а без нее ZwOpenFile не работает.
1
|
|
|
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 38
|
|
| 30.05.2016, 12:27 | |
|
Так а нужно тогда отдельный поток создавать, в котором вызывать ее или как?
И еще как будет выполняться сама проверка есть ли файл? Мне его открывать, и если удалось открыть то отдаю управление, а если не удалось открыть то сразу обрубать процесс??
0
|
|
|
Ушел с форума
|
|||
| 30.05.2016, 13:27 | |||
|
что по запросу вызывать ZwOpenFile и возвращать результат. А можно то же самое поручить work item-ам, чтобы не заморачиваться с потоками.
1
|
|||
|
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 38
|
|
| 30.05.2016, 15:02 | |
|
А как мне возвращать управления, вот если ZwOpenFile возвращает STATUS_SUCCESS, то что дальше делать?
0
|
|
|
Ушел с форума
|
|
| 30.05.2016, 15:46 | |
|
У тебя срабатывает нотификатор на запуск процесса.
В этом нотификаторе ты запускаешь work item (или даешь сигнал своему рабочему потоку) и ждешь, пока тот его не обработает и не вернет результат. И по результату либо просто возвращаешь управление системе из нотификатора, либо делаешь ZwTerminateProcess.
0
|
|
|
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 38
|
||||||
| 30.05.2016, 19:00 | ||||||
|
А можете написать, как будет выглядеть ZwOpenFile?
Пытался написать все функции и потом собрать и привести в действие, но зашел в дебри, если не сложно - поправьте в общем, очень запутался с параметрами вообще...
Там в начале, то просто начал писать в этом файле остальные функции, то скинул как есть пока
0
|
||||||
|
Ушел с форума
|
|
| 30.05.2016, 20:07 | |
|
Почему у тебя в ZwOpenFile вместо ACCESS_MASK передается указатель на ACCESS_MASK?
И вместо ShareAccess указатель на ShareAccess? И почему обе эти переменные неинициализированы? И почему реализация MyWorkItem находится внутри другой функции - DriverEntry? Это похоже не на дебри, а на незнание языка C. Если в документации MSDN написано, что такой-то параметр - это ULONG, значит, и передавать туда надо ULONG, а не указатель на ULONG. Иначе оно просто не будет компилироваться.
1
|
|
|
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 38
|
|
| 30.05.2016, 20:16 | |
|
Спасибо, половину уже по исправлял
А можно каким-то образом записывать в файл создание каждого нового процесса или удаление? получается выводить отладочные сообщения, о создании или удаления процесса, получается так же создавать файл в указанной папке и записывать туда указанную строку, А можно сделать так, что бы отладочные сообщения не выводились, а вместо них делались соответствующие записи в файл, который мы создаем?
0
|
|
|
Ушел с форума
|
|
| 30.05.2016, 20:52 | |
|
Ну конечно можно. Используй ZwWriteFile, например.
Кстати, права доступа в ядре указывать не обязательно, все равно проверки безопасности пропускаются. Можно, например, открывать процесс с ACCESS_MASK = 0 и с ним все равно можно будет работать.
1
|
|
| 30.05.2016, 20:52 | |
|
User32.dll на Win x64 - это x86-библиотека, x64 или. и то и другое одновременно? Установка Visual Studio 2008 на Windows 7 Professional x64 bit Qt Creator & MS Visual Studio создание окна в Win 7 x64 Win API в Microsoft Visual Studio 2008 Не ставится Win 7 x86 и Win 7 x64 на GPT раздел жесткого диска Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат»
Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
|
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
|