re-ebpf

Installation
SKILL.md

eBPF 程序逆向与对抗分析(BPF-64、progs/maps、xlated)

何时使用 / 何时不用

  • 用:BPF-64 指令集(8 字节定长指令、r0-r10 寄存器、lddw/alu32/helper 调用约定)层面的程序分析
  • 用:三种来源形态——BCC(运行期编译,多只剩内核态 prog)、libbpf(常规 BPF ELF,.maps/.BTF 齐全)、手工字节码(bpf_insn 数组/预编译 blob,无元数据)
  • 用:三用途——跟踪取证(bpftrace/bcc 程序功能还原)、恶意 eBPF(内核驻留/加载链/规避手法)、EDR 对抗(bpf hook 识别与反制)
  • 用:progs/maps 关联还原、hook 点(kprobe/tracepoint/cgroup/xdp/tc/fentry)识别、helper 调用号到内核 API 的语义映射
  • 不用:经典内核模块(.ko 驱动)——走 [[re-kernel]]
  • 不用:seccomp/套接字过滤器等传统 cBPF(经典 BPF,指令集与 BPF-64 不同,本技能不覆盖)
  • 不用:仅需分析宿主加载器二进制的通用场景([[re-binary-core]]);链上 BPF 字节码(Solana 类)语义表不同,走 [[re-blockchain]]
  • 注意:helper ID 是 Linux BPF UAPI 的稳定编号(已有 BPF_FUNC_* 数值不随内核版本重新编号),版本差异影响 helper 是否存在、是否允许用于特定 prog_type/context,以及内核结构布局;分析环境内核版本与样本目标版本尽量一致(见坑 3)

工具准备

所有工具先验证再使用。加载/运行 BPF 程序到内核需要 root(或 CAP_BPF/CAP_SYS_ADMIN);恶意样本(内核驻留/规避类)的动态分析默认在隔离虚拟机 + 快照中进行([[re-sandbox]],[[re-analyze/platform-tips]] 最高原则);仅只读查询(prog list/dump xlated)风险较低,但同样建议在可控环境核对内核版本一致性。

bpftool —— 核心工具(prog/map 查询与 xlated 反汇编)

Installs
47
GitHub Stars
193
First Seen
Aug 25, 2026