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

相关文章
|
13天前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
104 5
|
13天前
|
Linux
Linux系统之expr命令的基本使用
【10月更文挑战第18天】Linux系统之expr命令的基本使用
48 4
|
3天前
|
Linux Shell 数据安全/隐私保护
|
4天前
|
域名解析 网络协议 安全
|
11天前
|
监控 Linux Shell
|
10天前
|
运维 监控 网络协议
|
13天前
|
Unix Linux
Linux | Rsync 命令:16 个实际示例(下)
Linux | Rsync 命令:16 个实际示例(下)
27 3
Linux | Rsync 命令:16 个实际示例(下)
|
17天前
|
安全 Linux
Linux系统之lsof命令的基本使用
【10月更文挑战第14天】Linux系统之lsof命令的基本使用
71 2
Linux系统之lsof命令的基本使用