
sys_open系统调用函数入口设置 kprobe,当进程执行open系统调用时,就会触发 kprobe 的处理程序,从而可以获取到open系统调用的参数,如文件名、打开模式等。Documentation文件夹中,有关于 kprobe 相关的文档。这些文档可能会提及一些典型的可被跟踪的函数类别,例如系统调用相关函数(如sys_read、sys_write等)、常见的内核调度函数(如schedule)以及设备驱动相关的核心函数等。虽然文档不会列出所有可跟踪的函数,但可以为你提供一些常见的目标函数示例。<sys/syscall.h>等头文件中。通过查看这些头文件中的函数声明,你可以找到系统调用相关的函数,这些函数一般都是可以使用 kprobe 进行跟踪的。另外,对于设备驱动相关的函数,在对应的设备驱动头文件(如linux/netdevice.h用于网络设备驱动相关函数)中也可以找到许多潜在的跟踪目标。sys_开头的函数(可能是系统调用相关函数),就可以发现一些潜在的可跟踪函数。/sys/kernel/ftrace目录下的文件进行操作。例如,在available_filter_functions文件中,可以找到能够被跟踪的函数列表。虽然 ftrace 和 kprobe 不完全相同,但其中列出的许多函数也是可以使用 kprobe 进行跟踪的。不过需要注意的是,这个列表可能会受到内核配置和模块加载情况的影响。netfilter模块中的函数(如iptables相关的钩子函数)、网络协议栈相关函数(如tcp_rcv、udp_recvmsg等)。这些函数在处理网络流量过程中起到关键作用,是很可能使用 kprobe 进行跟踪的目标。sys_open、sys_close、sys_read等)都是可以使用 kprobe 进行跟踪的。这些函数的原型可以在内核源代码的arch/x86/entry/syscalls/syscall_64.tbl(对于 64 位 x86 系统)等文件中找到对应的系统调用号和函数名,进而使用 kprobe 进行跟踪。vector::push_back函数入口设置 uprobe,当程序执行push_back操作时,就会触发 uprobe 的处理程序,从而可以获取到被插入元素的值等信息。各种资料掺杂在一起的,然后让 AI 帮忙整理了一下,不保证没有错误,有错误请 call me。
还有就是一些个人笔记。