您的位置:首页 > 运维架构 > Linux

通过更改页表权限增加系统调用

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,验证成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux内核
相关文章推荐