Я хочу написать свой собственный драйвер / плагин для виртуальной сетевой карты, который можно настроить для виртуальных машин в VirtualBox для перехвата входящих и исходящих пакетов.
Я нашел документацию по VirtualBox SDK на http://download.virtualbox.org/virtualbox/SDKRef.pdf но, к сожалению, он описывает только то, как использовать удаленный API для управления виртуальной машиной, но не описывает написание пользовательских драйверов или плагинов для самой виртуальной машины.
Знаете ли вы какие-либо документы или учебники по этой теме?
Любые указатели высоко ценятся.
Обновить:
Я просмотрел в источниках VirtualBox и нашел следующее: https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Devices/Network/DrvNetSniffer.cpp
Нет ли документированного интерфейса для написания таких функций подключаемым способом?
Обработка сети в VMM («Монитор виртуальной машины» или «Гипервизор») обычно выполняется с помощью простого интерфейса, который «притворяется» сетевой картой для виртуальной машины и представляет собой интерфейс типа моста или коммутатора в направлении сетевого подключения хоста. ,
Я подозреваю, что вы не сможете легко подключиться к этому, и почти уверен, что к нему нет интерфейса «SDK» — я не работал с VirtualBox, но я работал над Xen Hypervisor (который является открытым исходным кодом, но даже тогда нет простого интерфейса для значимого перехвата пакетов).
Лучше всего, вероятно, реализовать это на стороне хоста интерфейса моста или коммутатора, который обеспечивает VMM. У большинства ОС есть способы подключиться к сетевому потоку на нативной стороне для целей брандмауэра.
(Я все еще жду загрузки документа SDK — я думаю, что сервер должен быть подключен к Интернету кусочком мокрой строки, так как я получил 40 КБ с тех пор, как начал писать этот пост)
Других решений пока нет …