我正在阅读有关 kprobes
BPF 程序类型的信息,我想知道是否有可能不仅拦截函数调用以进行跟踪或收集一些低级信息(寄存器、堆栈等) ,但替换调用并执行而不是实际函数?
kprobe
是否提供此功能,或者我正在寻找错误的工具?
最佳答案
不,kprobes BPF 程序只能读取系统调用参数和返回值,它们不能修改寄存器,因此不能拦截函数调用。这是 BPF 验证器强加的限制。
但是,内核模块可以使用 kprobes 拦截函数调用。
关于linux-kernel - ebpf:拦截函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49319439/