3

我正在阅读有关kprobesBPF 程序类型的信息,并且想知道是否有可能不仅拦截函数调用以进行跟踪或收集一些低级信息(寄存器、堆栈等),还可以替换调用并执行而不是实际功能?

是否kprobe提供此功能或我正在寻找错误的工具?

4

1 回答 1

6

不,kprobes BPF 程序只能读取系统调用参数和返回值,它们不能修改寄存器,因此不能拦截函数调用。这是 BPF 验证器施加的限制。

然而,内核模块可以使用 kprobes 拦截函数调用。

于 2018-03-16T11:49:00.123 回答