0

我试过运行opensnoop.py但使用

fnname_open='do_sys_open'

(我在其他脚本中看到过)而不是

fnname_open = b.get_syscall_prefix().decode() + 'open'
# = '__x86_sys_open' on Ubuntu 18.04

但脚本随后停止打印文件名。是什么导致了差异?

使用时attach_kprobe(event=fn)fn系统调用还是事件?

您是否从此处/proc/kallsyms所述获得可能的系统调用列表?

4

1 回答 1

2

如果将 BPF 程序附加到,则附加到__x86_sys_open它不会有相同的结果,do_sys_open因为这两个函数没有相同的原型:

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 程序来解决这个问题。

于 2021-11-21T11:36:59.407 回答