dok34.ru
Moderator
О, спасибо, интересно!В современной винде драйвера стандатритизированы. Это не как в windows 90-ых. Там надо его подстраивать под диспетчер ввода, вывода. Есть irp пакет, и он ожидает ссылки на функции которые надо прочитать (read, write, close, open и другие). Все на с++ пишется в режиме ядра. Еще надо прописать взаимодействие не только с диспетчером вводом вывод который irp пакеты создает, но и с plug and play, а также с диспетчером энергопотребления и с другими драйверами. Скажем, есть общий драйвер порта. Вы пишите драйвер минипорта для устройства. Значит надо учитывать драйвер порта который находится выше в иерархии. Меня как безопасницу больше инетерсует не ввод вывод а фильтры. Антивирусы как фильтры работают между диспетчером вводом вывода и драйверами, анализируют безопасная это операция или нет. Вирусы тоже могут работать как фильтры. Анализировать инфу и сбрасывать ее злодеям. Меня этот аспект интересует. Вирусы которые работают как фильтры в ядре. Раньше, до windows vista было проще разработчиков вирусов и антивирусов. Современную винду очень легко довести до синего экрана смерти, так как там есть patch guard, который делает модификацию кода ядра очень сложным. Если сделать -- то все, синий экран смерти. А до patch guard, до windows vista антивирусы часто занимались hooking. Сейчас тоже можно заниматься хукингом, но на уровне ntdll.dll. Хотя один из авторов книги windows internals Павел Йософович говорит, что хугинг на уровне ядра, ntos.exe, a не ntdll.dll возможен. Но надо знать хорошо алгоритмы patch guard. Но навряд ли разработчики антивирусов к этому прибегают, так как это будет часто вызывать синие экраны смерти. Но вирус может попытаться это рискнуть сделать, но тоже риск быть замеченным велик. Если patch guard видит модификацию критического года я ядре -- сразу синий экран.
Про минипорт к базовому драйверу хорошо объяснили!
А с ядром я давно не общался, всё новое!
В линуксе есть исходники, ядро можно самому компилить под нужное железо и задачи. Тут понятно, всё закрытое, но интересно!
... только я пожалуй перенесу сейчас в Комповую тему 🙂