Linux关于sys_call_table的使用

简介: 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,表示不要对嵌入式汇编进行优化。

相关文章
|
1天前
|
Linux
Linux常用命令2
Linux常用命令2
3 0
|
1天前
|
Linux
Linux常用命令1
Linux常用命令1
5 0
|
1天前
|
人工智能 Linux Shell
linux命令-条件判断-test
linux命令-条件判断-test
5 1
|
1天前
|
Linux
linux设置全局命令
linux设置全局命令
6 0
|
1天前
|
Linux 虚拟化 Windows
linux之df命令 查看分区大小
linux之df命令 查看分区大小
7 1
|
1天前
|
安全 Linux Shell
Linux常用命令详解与实战应用
【5月更文挑战第7天】本文详述了Linux常用命令,包括文件与目录操作(ls, cd, pwd, cp, mv, rm)、文本处理(cat, grep, sed)及系统管理(top, df, du)命令。通过实例演示了如何使用这些命令,帮助读者理解和掌握Linux操作,提升系统管理效率。学习和熟练运用这些基础命令,是高效使用Linux的关键。
|
2天前
|
存储 安全 Linux
深入理解 Linux 用户和用户组的基本概念 + 相关命令 (一篇就够)
深入理解 Linux 用户和用户组的基本概念 + 相关命令 (一篇就够)