首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >附加kprobe时`do_sys_open`与`__x86_sys_open`的比较

附加kprobe时`do_sys_open`与`__x86_sys_open`的比较
EN

Stack Overflow用户
提问于 2021-11-18 02:47:48
回答 1查看 23关注 0票数 0

我尝试过运行opensnoop.py,但使用

代码语言:javascript
复制
fnname_open='do_sys_open'

(我在其他scripts中见过),而不是

代码语言:javascript
复制
fnname_open = b.get_syscall_prefix().decode() + 'open'
# = '__x86_sys_open' on Ubuntu 18.04

但脚本随后会停止打印文件名。造成这种差异的原因是什么?

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

您是否按照here的说明从/proc/kallsyms获得可能的系统调用列表

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-21 11:36:59

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

代码语言:javascript
复制
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程序来修复此问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70013976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档