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_call_table [NR_execve] – > stub_execve – > sys_execve – > do_execve …在LXR上查看 stub_execve.

大佬总结

以上是大佬教程为你收集整理的在Linux 3.x上挂钩sys_execve()全部内容,希望文章能够帮你解决在Linux 3.x上挂钩sys_execve()所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。