Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么某些Linux x86_64系统调用需要存根?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

如果试图通过sys_call_table-hook挂钩某些系统调用,例如sys_execve这将失败,因为它们是由存根间接调用的.对于sys_execve,这是stub_execve(比较 LXR上的汇编代码). 但这些存根有什么用呢?为什么只有某些系统调用如execve(2)和fork(2)需要存根,这是如何连接到x86_64的?是否存在挂钩存根系统调用(在可装入内核模块中)的解决方法? 从 h
如果试图通过sys_call_table-hook挂钩某些系统调用,例如sys_execve这将失败,因为它们是由存根间接调用的.对于sys_execve,这是stub_execve(比较 LXR上的汇编代码).

但这些存根有什么用呢?为什么只有某些系统调用如execve(2)和fork(2)需要存根,这是如何连接到x86_64的?是否存在挂钩存根系统调用(在可装入内核模块中)的解决方法

解决方法

here开始,它说:

而且我认为execve只是这些特殊系统调用之一.

stub_execve代码,如果你想挂钩它,至少你可以尝试:(1)了解这些汇编代码的含义并自行完成,然后您可以在自己的汇编代码调用自己的函数.(2)从汇编代码的中间,它有一个调用sys_execve,你可以将sys_execve的地址替换为你自己的钩子函数.

大佬总结

以上是大佬教程为你收集整理的为什么某些Linux x86_64系统调用需要存根?全部内容,希望文章能够帮你解决为什么某些Linux x86_64系统调用需要存根?所遇到的程序开发问题。

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

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