【发布时间】:2018-08-25 10:39:07
【问题描述】:
我正在阅读有关kprobes BPF 程序类型的信息,我想知道是否有可能不仅拦截函数调用以进行跟踪或收集一些低级信息(寄存器、堆栈等),而且 替换调用并执行而不是实际函数?
kprobe 是否提供此功能或者我正在寻找错误的工具?
【问题讨论】:
标签: linux-kernel system-calls bpf kprobe ebpf
我正在阅读有关kprobes BPF 程序类型的信息,我想知道是否有可能不仅拦截函数调用以进行跟踪或收集一些低级信息(寄存器、堆栈等),而且 替换调用并执行而不是实际函数?
kprobe 是否提供此功能或者我正在寻找错误的工具?
【问题讨论】:
标签: linux-kernel system-calls bpf kprobe ebpf
不,kprobes BPF 程序只能读取系统调用参数和返回值,它们不能修改寄存器,因此不能拦截函数调用。这是 BPF 验证器施加的限制。
内核模块可以使用 kprobes 拦截函数调用。
【讨论】: