BPF简介
BPF(Berkeley Packet Filter)是一个在Linux内核运行的安全计算系统 可以简单理解为一个专门为了计算过滤规则的虚拟机 通常配合prctl()
或 seccomp()
进行对系统调用的限制 有两个主要32位寄存器:
A
(累加器, Accumulator):存储主要操作数据
X
(索引寄存器, Index Register):通常用于索引计算或临时存储数据
以及16个32位内存单元mem[idx]
支持常见的数值和位运算 在使用seccomp或prctl添加了BPF过滤器后 每次进行系统调用时都会先对使用的系统调用号sys_number
系统ABIarch
以及传入的参数进行安全计算然后判断是否能够执行系统调用