[英]`do_sys_open` vs `__x86_sys_open` when attaching kprobe
我試過運行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
獲得可能的系統調用列表?
附加到do_sys_open
的 BPF 程序如果將其附加到__x86_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
參數不會存儲在同一寄存器中,具體取決於您跟蹤的 function。 您還需要編輯 BPF 程序來解決這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.