包含标签 bpf 中的文章

eBPF 进阶:5种循环方式你都掌握了吗?

本文地址:https://www.ebpf.top/post/bpf_five_loops 1. 前言 本文的主题是在 eBPF 技术中代码如何编写循环。 循环几乎是我们所能接触到的所有编程语言中的通用概念,但在 eBPF 中,它们可能要复杂一些。更不用说,截止到目前 eBPF 提供了5+ 种不同的循环方式 - 那么我们应该……

阅读全文

BPF 调度器 sched_ext 实现机制、调度流程及样例

本文地址:https://www.ebpf.top/post/bpf_sched_ext_dive_into Linux 进程调度器 CFS 调度器 EEVDF 调度器 通用调度器的窘境 BPF 调度扩展器 sched_ext 实现机制 新增1: SCHED_EXT 调度类 新增2:eBPF 自定义调度器函数 SCHED_EXT 调度类工作流程 调度队列 DSQ(Dispatch Queue……

阅读全文

Linus 强势拍板 6.11 合入: BPF 赋能调度器终成正果

本文地址:https://www.ebpf.top/post/bpf_sched_ext 1. 插拔调度器的萌芽【2004 年】 在 2004 年,Linux 社区的 Con Kolivas 提出了可插拔式调度器想法,旨在让内核中存在多个调度器,用户可在引导时选择。提交 patch 的工作原理是将大量代码拆分为 kernel/sched.c 公共部分和私有部分,同……

阅读全文

LSM BPF 实践

本文地址:https://www.ebpf.top/post/lsm_bpf_intro 1. 安全背景知识 2. 内核安全策略模块通用框架 LSM 2.1 LSM 框架介绍 2.2 LSM 架构 2.3 LSM 中的钩子函数 3. LSM BPF 3.1 BCC 实践 3.2 libbpf-bootstrap 框架实践 4. 总结 5. 附录:LSM 热修内核漏洞查找 hook 点过程 1. 安全背景知识 国际上对计算机安全概括了三个特……

阅读全文

eBPF: 从 BPF to BPF Calls 到 Tail Calls

本站地址:https://www.ebpf.top/post/bpf2pbpf_tail_call 本文作者:李兆龙 (已经取得得原作者授权) 原文地址:https://blog.csdn.net/weixin_43705457/article/details/123474244 1. 引言……

阅读全文

揭秘 BPF map 前生今世

本文地址:https://www.ebpf.top/post/map_internal 1. 前言 众所周知,map 可用于内核 BPF 程序和用户应用程序之间实现双向的数据交换, 为 BPF 技术中的重要基础数据结构。 在 BPF 程序中可以通过声明 struct bpf_map_def 结构完成创建,这其实带给我们一种错觉,感觉这和普通的 C 语言变量……

阅读全文

【BPF 攻防系列-1】【译】开战!!!

本文地址:https://www.ebpf.top/post/offensive-bpf-getting-started 在近几年来,eBPF 在 Linux 社区和之外得到了越来越多的关注。 eBPF 在攻击场景中的使用也逐渐引起大家的关注。因此,我决定从红队的角度进入深入探讨,以让大家对此有个整体的认……

阅读全文

基于 Ubuntu 21.04 BPF 开发环境全攻略

本文地址:https://www.ebpf.top/post/ubuntu_2104_bpf_env 1. 系统安装 1.1 Vagrant Vagrant 是一款用于构建及配置虚拟开发环境的软件,基于 Ruby,主要以命令行的方式运行。Vagrant 由 HashiCorp 官方出品,相信提到大名鼎鼎的 HashiCorp 公司,大家还能够联想到著名的安全密码存……

阅读全文

【BPF入门系列-7】使用 ebpf 实时持续跟踪进程文件记录

本文主要用于演示基于 ebpf 技术来实现对于系统调用跟踪和特定条件过滤,实现基于 BCC 的 Python 前端绑定,过程中对于代码的实现进行了详细的解释,可以作为学习 ebpf 技术解决实际问题的参考样例。 1. 样例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <stdio.h> #include <unistd.h> int main() { FILE *fp; char buff[255]; printf("Pid %d\n", getpid()); fp = fopen("./hello.c", "r"); fscanf(fp, "%s", buff); printf("Read: [%s]\n", buff ); getchar(); fclose(fp); return 0; } fopen 函数……

阅读全文