簡體   English   中英

附加 kprobe 時的 `do_sys_open` 與 `__x86_sys_open`

[英]`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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM