cilium/ebpf
GitHub: cilium/ebpf
纯 Go 实现的 eBPF 库,提供 eBPF 程序的加载、编译、调试及内核挂载能力,外部依赖极少。
Stars: 7870 | Forks: 879
# eBPF
[](https://pkg.go.dev/github.com/cilium/ebpf)

ebpf-go 是一个纯 Go 库,提供了用于加载、编译和调试 eBPF 程序的工具。它的外部依赖极少,旨在用于长期运行的进程。
有关更广泛的 eBPF 生态系统中的互补项目,请参阅 [ebpf.io](https://ebpf.io)。
## 快速入门
请查看我们的[快速入门]指南。
## 获取帮助
社区会积极关注我们的 [GitHub Discussions](https://github.com/cilium/ebpf/discussions) 页面。在发起新话题之前,请先搜索现有的讨论。如果您刚刚起步,或者不确定这是否是库代码中的 bug,请避免在 bug 跟踪系统中提交 issue。
或者,如果您对项目有其他疑问,可以[加入](https://ebpf.io/slack) Slack 上的 [#ebpf-go](https://cilium.slack.com/messages/ebpf-go) 频道。请注意,该频道是临时性的,其历史记录超过一定时间后就会被清除,这对于以后遇到相同问题的其他人来说帮助较小。
## 包
此库包含以下包:
* [asm](https://pkg.go.dev/github.com/cilium/ebpf/asm) 包含一个基本的汇编器,允许您直接在 Go 代码中编写 eBPF 汇编指令。(如果您更喜欢用 C 编写 eBPF 程序,则无需使用此包。)
* [cmd/bpf2go](https://pkg.go.dev/github.com/cilium/ebpf/cmd/bpf2go) 允许在 Go 代码中编译和嵌入用 C 编写的 eBPF 程序。除了编译 C 代码外,它还会自动生成用于加载和操作 eBPF 程序及 map 对象的 Go 代码。
* [link](https://pkg.go.dev/github.com/cilium/ebpf/link) 允许将 eBPF 附加到各种 hook。
* [perf](https://pkg.go.dev/github.com/cilium/ebpf/perf) 允许读取 `PERF_EVENT_ARRAY`。
* [ringbuf](https://pkg.go.dev/github.com/cilium/ebpf/ringbuf) 允许读取 `BPF_MAP_TYPE_RINGBUF` map。
* [features](https://pkg.go.dev/github.com/cilium/ebpf/features) 使用原生 Go 实现了等同于 `bpftool feature probe` 的功能,用于发现与 BPF 相关的内核特性。
* [rlimit](https://pkg.go.dev/github.com/cilium/ebpf/rlimit) 提供了一个便捷的 API,用于解除 5.11 之前内核上的 `RLIMIT_MEMLOCK` 限制。
* [btf](https://pkg.go.dev/github.com/cilium/ebpf/btf) 允许读取 BPF Type Format。
* [pin](https://pkg.go.dev/github.com/cilium/ebpf/pin) 提供了用于处理 bpffs 上被 pin 住的对象的 API。
## 要求
* [上游支持](https://golang.org/doc/devel/release.html#policy)的 Go 版本
* Linux (amd64, arm64):CI 会在 kernel.org LTS 版本上运行。>= 4.4 应该可以运行,但不支持已 EOL(生命周期结束)的版本。
* Windows (amd64):CI 会在 Windows Server 2022 上运行。仅支持最新的 eBPF for Windows 版本。
* 其他架构尽最大努力支持。不支持 32 位架构。
## 许可证
MIT
### eBPF Gopher
eBPF honeygopher 基于 Renee French 设计的 Go gopher。
标签:Docker镜像, EVTX分析, Go, Linux内核, Ruby工具, SOC Prime, 安全渗透, 开发工具, 开发库, 日志审计, 系统编程