用途:在 BPF-64 指令集层面分析 eBPF 程序,覆盖三种来源形态(BCC 运行期编译、libbpf 常规 BPF ELF、手工字节码 blob)与三类用途:跟踪取证功能还原、恶意 eBPF(内核驻留/加载链/规避)、EDR 对抗(bpf hook 识别与反制)。不覆盖经典内核模块(.ko)、传统 cBPF(seccomp/套接字过滤器)与链上 BPF 字节码。
主要能力:progs/maps 关联还原、hook 点(kprobe/tracepoint/cgroup/xdp/tc/fentry)识别、helper 调用号到内核 API 的语义映射、静态与运行期双视角反汇编对比。
工具与用法:bpftool 为核心(apt install bpftool / dnf install bpftool / pacman -S bpftool),用 bpftool prog list、bpftool prog dump xlated id N、bpftool map show/dump id N、bpftool feature probe、bpftool btf dump file /sys/kernel/btf/vmlinux 等查询;llvm-objdump -d prog.o 做静态反汇编;bpftrace -d -e 对照还原;pyelftools 脚本化提取 .text/.maps/.BTF/.rel* 段;Ghidra 10.3+ 内置 eBPF 处理器;LIEF 批量反汇编。加载/运行 BPF 需 root 或 CAP_BPF/CAP_SYS_ADMIN,恶意样本动态分析应在隔离虚拟机加快照中进行。
限制:helper ID 为 Linux BPF UAPI 稳定编号,版本差异影响 helper 是否存在及可用 prog_type;xlated 是 verifier 重写后形态,与源码静态反汇编存在差异,应以 xlated 为执行真相;BTF 缺失时 map 布局与结构体偏移需从指令常量反推;CO-RE 字段偏移为加载时按目标内核 BTF 计算,静态读取可能不符;未发现公开可用的专用 eBPF 逆向框架,当前依赖通用工具链组合。