1

我正在学习 eBPF,并且我知道我可以将我的 eBPF 程序附加到 kprobes、uprobes、tracepoints 等等。我看到 /sys/kernel/debug/tracing/events/ 下有一个跟踪点列表,我可以在其中附加 eBPF 程序。但是,我如何找到我可以破解的 kprobe 函数,比如与 TCP 相关的函数?另外,我如何找到这些函数签名?

谢谢。

4

1 回答 1

1

您可以将 kprobe 附加到内核的几乎所有函数(前提是在编译内核时它们没有被内联)。列出这些函数的一种方法是通过cat /proc/kallsyms. tcp在您的情况下,该文件上的grep ?至于签名,我认为除了阅读内核版本的内核源代码之外,没有其他地方可以获得它们。

请注意,由于内核函数不是用户 API 的一部分,因此无法保证其签名的稳定性(这可能是签名列表毫无意义的原因——除了要列出的大量签名之外) . 如果你希望你的 eBPF 程序在不同内核版本之间更加健壮和可移植,你应该看看CO-RE

于 2021-05-30T23:12:07.147 回答