eBPF для Windows может применяться с уже существующими инструментами для работы eBPF и предоставляет типовой API, применяемый для eBPF-приложений в Linux. В том числе проект позволяет компилировать написанный на языке Си код в байткод eBPF при помощи штатного компилятора eBPF на базе Clang и запускать уже созданные для Linux обработчики eBPF поверх ядра Windows, предоставляя специальную прослойку совместимости и поддерживая штатный API Libbpf для совместимости c приложениями, взаимодействующими с программами eBPF. В том числе предлагаются прослойки, предоставляющие Linux-подобные hook-и для XDP (eXpress Data Path) и socket bind, абстрагирующие доступ к сетевому стеку и сетевым драйверам Windows. Из планов отмечается предоставление полноценной совместимости на уровне исходных текстов с типовыми eBPF-обработчиками Linux.

Ключевым отличием реализации eBPF для Windows является применение альтернативного верификатора байткода, изначально предложенного сотрудниками компании VMware и исследователями из канадских и израильских университетов. Верификатор запускается в отдельном изолированном процессе в пространстве пользователя и применяется перед выполнением BPF-программ с целью выявления ошибок и блокирования возможной вредоносной активности.
Для проверки в eBPF для Windows применяется метод статического анализа на основе абстрактной интерпретации (Abstract Interpretation), который по сравнению с верификатором eBPF для Linux демонстрирует более низкий уровень ложных срабатываний, поддерживает анализ циклов и обеспечивает хорошую масштабируемость. Метод учитывает множество типовых шаблонов выполнения, полученных на основе анализа существующих
eBPF-программ.
После верификации байткод передаётся в интерпретатор, работающий на уровне ядра, или пропускается через JIT-компилятор с последующим выполнением результирующего машинного кода с правами ядра. Для изоляции обработчиков eBPF на уровне ядра применяется механизм HVCI (HyperVisor-enforced Code Integrity), использующий средства виртуализации для защиты процессов в ядре и обеспечивающий подтверждение целостности выполняемого кода по цифровой подписи. Ограничением HVCI является возможность верификации только интерпретируемых eBPF-программ и невозможность использования совместно с JIT (предоставляется выбор — либо производительность, либо дополнительная защита).
Источник: http://www.opennet.ru/opennews/art.shtml?num=55127