Repolode
microsoft

microsoft/ebpf-for-windows

在 Windows 内核上运行 eBPF 程序的实现,沿用 Linux 生态的工具链和 API。

Star
3,588
Fork
310
未关闭 Issue
322
最近提交
16小时前

这是什么?

eBPF for Windows 将 eBPF 编程模型引入 Windows。项目复用了现有的 eBPF 开源组件,例如 uBPF 的 JIT 编译器和 PREVAIL 验证器,并在其上增加 Windows 运行环境,使用 clang 等标准工具链编译的程序可以加载到内核中。项目提供兼容 Libbpf 的 API,并支持 bpftool 等命令行工具来加载和管理程序。

程序有三种运行方式:原生模式会把字节码转换为 C 代码并编译为 Windows 驱动,是推荐方式,也能在启用 HVCI 的系统上运行;JIT 模式通过用户态服务编译执行;解释器仅存在于调试版本中。程序可挂载到内核 hook 上,并调用封装了 Windows 公开内核 API 的辅助函数。项目支持 Windows 11 及 Windows Server 2022 及以上版本。

核心功能

  • 01在 Windows 上运行由 clang 等标准工具链编译的 eBPF 程序。
  • 02提供兼容 Libbpf 的 API,并支持 bpftool 加载程序。
  • 03原生模式将 eBPF 字节码编译为 Windows 驱动,可在启用 HVCI 的系统上运行。
  • 04基于 uBPF 编译器提供 JIT 编译执行路径。
  • 05提供挂载点和辅助函数,封装了 Windows 公开内核 API。

适用场景

  • 借助 eBPF 工具链在 Windows 内核中实现可观测性或 DoS 防护逻辑。
  • 将基于 eBPF 的网络或追踪程序以较少的源码改动移植到 Windows。
  • 在启用 HVCI 的系统上部署内核级 eBPF 程序。

快速上手

  1. 1

    阅读 docs/GettingStarted.md 中的入门指南,安装并试用本项目

使用前须知

  • 需要 Windows 11 或更高版本,或 Windows Server 2022 或更高版本。
  • 项目自述仍处于开发中(work-in-progress)阶段。
  • 启用 HVCI 时,只有原生模式的 eBPF 程序可以运行,因为 JIT 编译的程序无法运行,且发布版本中不包含解释器。

收录于专题

标签

常见问题

ebpf-for-windows 是什么?
在 Windows 内核上运行 eBPF 程序的实现,沿用 Linux 生态的工具链和 API。 eBPF for Windows 将 eBPF 编程模型引入 Windows。项目复用了现有的 eBPF 开源组件,例如 uBPF 的 JIT 编译器和 PREVAIL 验证器,并在其上增加 Windows 运行环境,使用 clang 等标准工具链编译的程序可以加载到内核中。项目提供兼容 Libbpf 的 API,并支持 bpftool 等命令行工具来加载和管理程序。
ebpf-for-windows 可以免费使用吗?用的什么许可证?
ebpf-for-windows 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
ebpf-for-windows 还在维护吗?
活跃维护中。ebpf-for-windows 最近一次提交是在 2026年11月6日。
ebpf-for-windows 适合用来做什么?
借助 eBPF 工具链在 Windows 内核中实现可观测性或 DoS 防护逻辑。 将基于 eBPF 的网络或追踪程序以较少的源码改动移植到 Windows。 在启用 HVCI 的系统上部署内核级 eBPF 程序。
ebpf-for-windows 怎么安装和运行?
阅读 docs/GettingStarted.md 中的入门指南,安装并试用本项目
在哪里获取 ebpf-for-windows?
源代码和安装说明在 GitHub 上:https://github.com/microsoft/ebpf-for-windows

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目