Linux
发布时间:2022-03-31 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Linux 3.x上挂钩sys_execve(),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
概述
我试图通过修改系统调用表来挂钩 Linux 3.x内核上的sys_execve()函数.问题是sys_execve()只应在执行失败时返回错误代码.使用我正在使用的包装器函数(见下文),当在有效的可执行文件上调用sys_execve()时,它执行正常并且一切正常.但是,当调用不存在的文件或导致错误情况的其他内容时,调用程序将崩溃: segfault at 3b ip 000000000000003
我试图通过
修改系统@L_
197_1@表来挂钩
Linux 3.x内核上的sys_execve()
函数.问题是sys_execve()只应在执行失败时返回
错误代码.使用我正在使用的包装器
函数(见下文),当在有效的可执行
文件上@L_
197_1@sys_execve()时,它执行正常并且一切正常.但是,当@L_
197_1@不存在的
文件或导致
错误情况的其他
内容时,@L_
197_1@程序将崩溃:
segfault at 3b ip 000000000000003b...
使用strace检查钩子sys_execve()的返回值显示-1或ENOSYS而不是正确的错误代码,这让我感到困惑,因为我已经检查了我的包装器函数的程序集以及sys_execve()的Linux源代码.有关为什么我的包装器没有正确传递错误代码的任何建议?
asmlinkage long new_execve(const char* name,const char const** argv,const char const** envp,struct pt_regs* regs) {
return orig_func(name,argv,envp,regs);
}
你不能通过
修改系统@L_
197_1@表来挂钩execve,就像在x86_64上从
stub_execve@L_
197_1@sys_execve一样.所以@L_
197_1@链是sys_c
all_table [NR_execve] – >
stub_execve – > sys_execve – > do_execve …在LXR上查看
stub_execve.
大佬总结
以上是大佬教程为你收集整理的在Linux 3.x上挂钩sys_execve()全部内容,希望文章能够帮你解决在Linux 3.x上挂钩sys_execve()所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。