通过更改页表权限增加系统调用
2018-03-03 23:49
721 查看
实验平台i386,linux kernel版本:2.6.22(之后版本原理都是一样)首先上一副图:
首先知道cpu看到的都是虚拟地址,CR3寄存器,页表中都是存的物理地址,通过MMU把虚拟地址映射到页表中的物理地址,这幅图说的很清楚了,接下来要获取到sys_call_table在内核中的内存地址export version=$(uname -r)
由于sys_call_table地址对应的物理地址在内核中是只读的,所以主旨就是在页表把它的权限改成可写的w首先写个小模块,导出内核中sys_call_tabel符号的地址(虚拟地址)
把本模块insmod进内核sudo insmod myexport.ko svctable=C02FC540 接下来增加(也算是修改)系统调用
sudo insmod mycall.ko最后写应用程序验证结果
运行此程序,发现最后number=16,验证成功
首先知道cpu看到的都是虚拟地址,CR3寄存器,页表中都是存的物理地址,通过MMU把虚拟地址映射到页表中的物理地址,这幅图说的很清楚了,接下来要获取到sys_call_table在内核中的内存地址export version=$(uname -r)
由于sys_call_table地址对应的物理地址在内核中是只读的,所以主旨就是在页表把它的权限改成可写的w首先写个小模块,导出内核中sys_call_tabel符号的地址(虚拟地址)
把本模块insmod进内核sudo insmod myexport.ko svctable=C02FC540 接下来增加(也算是修改)系统调用
sudo insmod mycall.ko最后写应用程序验证结果
运行此程序,发现最后number=16,验证成功
相关文章推荐
- QT在linux环境下读取和设置系统时间(通过system来直接调用Linux命令,注意权限问题)
- 增加Linux系统调用——通过增加内核模块
- 通过修改注册表来更改系统签名认证权限
- 增加Linux系统调用——通过Hack增加内核模块
- 增加Linux系统调用——通过重新编译内核
- 通过ContentResolver调用系统URI实现的通讯录示例
- 通过 open falcon 的 agent 的http 接口实现远程系统命令调用
- 调用系统级别权限(比如修改时间)
- 以调用系统相机拍照为例了解Android 6.0运行时权限
- Linux下通过ioctl系统调用来获取和设置网络信息
- Linux 3.10.12通过编译内核添加系统调用
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- 解决通过Intent调用系统拍照程序,返回图片太小的问题
- 通过虚函数表调用虚函数与通过虚函数表(绕过访问权限控制)
- 怎样通过java调用IOS系统图片选择器?
- 通用权限管理系统多语言开发接口 - java,php 调用接口程序,多业务子系统集成
- 一步步教你如何用疯狂.NET架构中的通用权限系统 -- 数据集权限的调用权限讲解
- hive通过其它用户连接后执行语句提示没有hdfs系统目录权限
- android 通过Intent action 跳转到系统页面,调用系统功能以及action动