发布了文章2021-12-25
总结:函数一开始直接在ring buffer中申请空间,申请失败的话直接就返回了,不会执行后续操作,节省时间,一旦申请成功,即可保证bpf_ringbuf_submit一定不会因为没有空间失败,且省去Perf buffer中拷贝结构体的操作。
发布了文章2021-12-25
cat /sys/kernel/debug/tracing/events/syscalls/xxx/format. xxx为要跟踪的函数,在这里有函数参数定义。
发布了文章2021-12-25
然后,需要安装 go 的工具包。在 vscode 中,输入快捷键:command(ctrl) + shift + p,在弹出的窗口中,输入:go:install/Update Tools,回车后,选择所有插件(勾一下全选),点击确认,进行安装(设置GOPROXY)。
发布了文章2021-12-25
前段时间编译bpf c文件,都是用的bpf2go这个go包,这个包虽然很方便,但是指定参数比较困难,学习到tracee falco这种大型项目都是通过makefile直接编译bpf代码,因此打算自己写Makefile {代码...} Makefile写起来很简单,生产.o文件也很easy,但是当用cilium/ebpf加...
发布了文章2021-12-25
0x1:应用层流程基于Linux kernel source v5.131.加载bpf.o文件并处理elf section信息 {代码...} 2.加载obj文件到内核 {代码...} 0x2:内核流程 {代码...} 重点看看bpf prog加载流程,熟悉verfiy机制和jit机制 {代码...} {代码...} {代码...} {代码...} 详细介绍: BFP...
发布了文章2021-12-25
非root用户不赋予CAP_BPF及CAP_SYS_ADMIN 注:3.15 - 5.7 内核不赋予CAP_SYS_ADMIN即可 5.8及以后内核需要同时不存在CAP_BPF及CAP_SYS_ADMIN权限
发布了文章2021-12-25
背景:本文主要解决centos7 4.18内核系统eBPF编译环境搭建流程:1.内核升级关于如何在centos7安装4.18内核,这个网上有大把教程,不再赘述2.编译套件升级centos7 默认clang llvm版本较低,不识别-target=bpf命令,因此需要对clang进行升级GCC升级 {代码...} 安装cmak...
发布了文章2021-12-25
BPF 的全称是 Berkeley Packet Filter,是一个用于过滤(filter)网络报文(packet)的架构。(例如tcpdump),目前称为Cbpf(Classical bpf)
发布了文章2021-12-25
eBPF支持在用户态将C语言编写的一小段“内核代码”注入到内核中运行,注入时要先用llvm编译得到使用BPF指令集的elf文件,然后从elf文件中解析出可以注入内核的部分,最后用bpf_load_program方法完成注入。 用户态程序和注入到内核中的程序通过共用一个位于内核中map实...