Можно ли записать драйверы Windows на Python?
Могут ли Windows-драйверы записываться на Python?
Ответ 1
Да. Вы не можете создавать "классические" драйверы режима ядра. Однако, начиная с XP, Windows предлагает "Рамка драйверов пользовательского режима" . Они не могут делать все, очевидно - любой драйвер, используемый при загрузке ОС, должен быть в ядре. Но с UMDF вам нужно только реализовать COM-компоненты.
Помимо драйверов загрузки, вы также не можете записывать драйверы UMDF, которые:
- Обработка прерываний
- Непосредственный доступ к оборудованию, например, прямой доступ к памяти (DMA)
- имеют строгие циклы синхронизации.
- Использовать невыгружаемый пул или другие ресурсы, зарезервированные для режима ядра.
Ответ 2
Окончательный ответ не исключает встраивания интерпретатора в ваш другой драйвер C/assembly. Если у кого-то нет рамки, тогда ответ будет отрицательным. Когда у вас есть интерпретатор и привязки на месте, остальная часть логики может быть выполнена в Python.
Однако писать драйверы - одна из тех вещей, для которых C лучше всего подходит. Я предполагаю, что полученный в результате код Python будет выглядеть очень похож на код C и превзойти цель служебных данных интерпретатора.
Ответ 3
Хороший способ получить представление о том, почему это практически невозможно, - это прочитать совет Microsoft по использованию С++ в драйверах. Как производная от C, использование С++ представляется простым. На практике это не так.
Например, вы должны решить для каждой функции (и действительно каждой инструкции сборки), будь то в доступной для страниц или нестранимой памяти. Для этого требуются расширения для C, тщательное использование новых возможностей С++ или в этом случае специальное расширение для языка Python и виртуальной машины. Кроме того, ваша совместимая с драйвером VM также должна иметь дело с разными IRQL - там есть иерархия уровней, которые ограничивают то, что вы можете и чего не можете сделать.
Ответ 4
Python запускается на виртуальной машине, поэтому нет.
НО:
Вы можете написать компилятор, который переводит код Python на машинный язык. Как только вы это сделаете, вы можете это сделать.
Ответ 5
Я не знаю ограничений на драйверы для Windows (схемы распределения памяти, динамическая загрузка библиотек и все), но вы можете внедрить интерпретатор python в свой драйвер, после чего вы можете делать все, что хотите, Не то, чтобы я думаю, что это хорошая идея:)
Ответ 6
Никогда не говори никогда, но эх.. нет
Возможно, вы сможете взломать что-то вместе, чтобы запустить части драйверов в режиме python. Но материал в режиме ядра можно выполнять только в C или сборке.
Ответ 7
Нет, они не могут. Драйверы Windows должны быть написаны на языке, который может
- Интерфейс с API на основе C
- Скомпилировать до машинного кода
Тогда опять же ничего не мешает вам писать компилятор, который переводит python на машинный код;)