eBPF for Windows 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
eBPF for Windows 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
eBPF for Windows 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 C/C++ SHELL 查看源码 »
操作系统 Windows
软件类型 开源软件
所属分类 管理和监控eBPF
开源组织 微软
地区 不详
投 递 者 h4cd
适用人群 未知
收录时间 2023-12-25

软件简介

此项目允许在 Windows 上使用 Linux 生态中熟悉的现有 eBPF 工具链和应用接口。也就是说,该项目将现有的 eBPF 项目作为子模块,并添加中间层,使其能在 Windows 上运行。

下图显示了本项目的基本架构和相关组件:

现有的 eBPF 工具链(clang 等)可用于从各种语言的源代码生成 eBPF 字节码。字节码可以被任何应用程序使用,也可以通过 bpftool 或 Netsh 命令行工具使用。

eBPF 字节码会被发送到一个静态验证器(PREVAIL 验证器),该验证器托管在一个安全的用户模式环境中,如系统服务、飞地或可信虚拟机。如果 eBPF 程序通过了验证器的所有检查,就可以加载到内核模式执行上下文中。通常情况下,这是通过 JIT 编译器(通过 uBPF JIT 编译器)将程序编译成本地代码并传递给执行上下文来实现的。在调试构建中,字节码可直接加载到解释器(从内核模式执行上下文中的 uBPF),但解释器不会仅在调试模式中支持,不提供发布构建频道支持,因为它被认为安全性较低。

安装到内核模式执行上下文中的 eBPF 程序可以附加到各种钩子上,并调用 eBPF shim 公开的各种辅助 API,eBPF shim 内部封装了公共 Windows 内核 API,允许在现有版本的 Windows 上使用 eBPF。许多辅助程序已经存在,随着时间的推移,还将添加更多钩子和辅助程序。

此项目并不是 eBPF 的分支,eBPF for Windows 利用现有项目,包括 IOVisor uBPF 项目和 PREVAIL 校验器,通过为代码添加 Windows 特定的托管环境,将它们运行在 Windows 上。

Linux 提供了许多钩子和辅助工具,其中有些是 Linux 特有的(例如,使用 Linux 内部数据结构),不适用于其它平台,而其它钩子和辅助工具则是通用的,目的是为 eBPF 程序提供支持。

eBPF 还可以与 HyperVisor-enforced Code Integrity(HyperVisor 强制代码完整性,HVCI)一起使用。启用 HVCI 后,eBPF 程序无法进行 JIT 编译,但可以以本地模式或解释模式运行。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
8 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部