CPU页部件,就是大家所知的MMU,它的工作原理就是根据线性地址算出物理地址,因为数据是存放在内存条上的。硬件保护就是在这一步发挥作用的。MMU工作需要依赖Linux内核中的4级页表,就是上图。一般来说,前三级表不做权限控制,最后一级才做,如图
这个图中的数据叫页描述符,其中的RW位就是ChatGPT所说的硬件支持,为0表示只读,为1表示可读可写,我们来看看常量字符串这个位是多少
5的二进制是0b0101,RW位是0,即只读,秘密终于解开!
既然知道底层是如何实现的,那就知道怎么改了!
其他Linux内核提供的mprotect函数,本质就是干这个事的!
本文至此结束,你学会(废)了吗?
若有收获,就点个赞吧