我尝试过运行opensnoop.py,但使用
fnname_open='do_sys_open'(我在其他scripts中见过),而不是
fnname_open = b.get_syscall_prefix().decode() + 'open'
# = '__x86_sys_open' on Ubuntu 18.04但脚本随后会停止打印文件名。造成这种差异的原因是什么?
当使用attach_kprobe(event=fn)时,fn是系统调用还是事件?
您是否按照here的说明从/proc/kallsyms获得可能的系统调用列表
发布于 2021-11-21 11:36:59
如果您将BPF程序附加到do_sys_open,那么附加到__x86_sys_open的BPF程序将不会有相同的结果,因为这两个函数没有相同的原型:
long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode);
long sys_open(const char __user *filename, int flags, umode_t mode);因此,例如,根据您跟踪的函数,filename参数不会存储在同一个寄存器中。您还需要编辑BPF程序来修复此问题。
https://stackoverflow.com/questions/70013976
复制相似问题