Administrator
发布于 2024-07-02 / 31 阅读
0

BCC helloword

BCC python

BCC

bpftrace

安装vscode 插件

python

ext:bt

c++

# Install kernel headers and BCC

sudo apt-get install bpfcc-tools linux-headers-$(uname -r) libbpfcc-dev  libbpf-dev

from bcc import BPF

b=BPF(text='int kprobe__sys_clone(void *ctx) { bpf_trace_printk("Hello, World!\\n"); return 0; }')

dir(b)

b.trace_print()

sudo bpftrace -l "kprobe:*" | wc -l

sudo bpftrace -l "kprobe:*"|grep unlinkat

clang hello_world.c -o hello_world -lbcc

#参考libppf

GPL 内核辅助方法

https://github.com/nyrahul/ebpf-guide/blob/master/docs/gpl_license_ebpf.rst

Apache 授权协议 eBPF

https://github.com/iovisor/ubpf

Linux eBPF 的高级跟踪语言

bpftrace 是一种高级跟踪语言,适用于最新 Linux 内核 (4.x) 中提供的 Linux 增强型 Berkeley 数据包过滤器 (eBPF)。bpftrace 使用 LLVM 作为后端将脚本编译为 BPF 字节码,并利用BCC与 Linux BPF 系统交互,以及现有的 Linux 跟踪功能:内核动态跟踪(kprobes)、用户级动态跟踪(uprobes)、和跟踪点。bpftrace 语言的灵感来自 awk 和 C,以及 DTrace 和 SystemTap 等前身跟踪器。bpftrace 由Alastair Robertson创建。

https://github.com/iovisor/bpftrace

# BPF 编译器集合 (BCC)

BCC 是一个用于创建高效的内核跟踪和操作程序的工具包,包括几个有用的工具和示例。它利用了扩展的 BPF(伯克利数据包过滤器),正式名称为 eBPF,这是 Linux 3.15 中首次添加的一项新功能。BCC 使用的大部分内容都需要 Linux 4.1 及更高版本。

BCC 使 BPF 程序更容易编写,具有 C 语言的内核工具(并包括围绕 LLVM 的 C 包装器)以及 Python 和 lua 的前端。它适用于许多任务,包括性能分析和网络流量控制。

https://github.com/iovisor/bcc

./scripts/sign-file  /home/abc/key/MOK.priv /home/abc/key/MOK.der samples/ftrace/ftrace-direct.ko  ftrace-direct.ko 

hexdump -C samples/ftrace/ftrace-direct.ko | tail