Linux关于sys_call_table的使用
2021/11/7 7:10:26
本文主要是介绍Linux关于sys_call_table的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
系统调用服务程序的地址存放在sys_call_table中,通过系统调用号定位到具体的系统调用地址,然后我们就可以通过编写内核模块来修改sys_call_table中的系统调用的地址来为我们自己定义的函数的地址,可以实现系统调用的拦截。但是我的版本不支持sys_call_table的导出,所以需要获得sys_call_table的地址,通过sudo cat /proc/kallsyms | grep sys_call_table
可以看出sys_call_table数组的首地址为0xffffffffb5c00300,权限为只读,所以我们还要修改它的权限。通过查阅可以知道,CR0的位16是写保护标志。当设置该标志时,处理器会禁止超级用户程序向用户级只读页面执行写操作;当该位复位时则反之,所以要将该位置0。由于最后要将CR0复原,因此利用了ret报存了cr0原来的值,最后调用asm volatile(“mov %%rax,%%cr0” ::“a”(val))将cr0复原。这里使用了volatile,表示不要对嵌入式汇编进行优化。
这篇关于Linux关于sys_call_table的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法
- 2024-08-21【Linux】gnome桌面环境切换KDE Plasma
- 2024-08-19如何安装 VMware Tools (macOS, Linux, Windows)
- 2024-08-15Linux部署Scrapy教程:入门级指南
- 2024-07-29linux命令行下好用的性能监控工具atop
- 2024-07-04Linux系统上离线升级SSH服务的具体操作步骤-icode9专业技术文章分享
- 2024-06-0600-macOS和Linux安装和管理多个Python版本
- 2024-03-30[译]漫画SELinux概念