linux内核内存读写属性更改的问题

本文深入探讨了ARM体系下Linux内核版本4.19中内存读写属性的修改机制。重点分析了set_mem_rw函数在内核中的作用,及其如何通过检查内存属性标志来实施权限控制。文章还讨论了绕过检查的可能性,并展示了如何通过导出内存属性标志来成功修改内存属性。

在arm体系下,内核在较早版本的读写限制没有开启,至少在4.4版本之前。但是在4.19之后的内核,默认开启。

这里有个set_mem_rw(unsigned long ,int)
在19版本上理论上可以更改内存的读写属性,但是采取

set_mem_rw = (void *)kallsyms_lookup_name("set_memory_rw");

进行导出引用,发现根本不管用。我还以为这里内核写的有错误。

在这里插入图片描述
这里这个chang_memory_common是内核中的set_mem_rw的主要实现。

我们看到红色框里面的flag & VM_ALLOC 标志如果不属于这个,那么就直接退出。
在这里插入图片描述
据此,我们导出内存属性中的flagz并做了更改,如黄色框图显示。
再次调用导出set_mem_rw,发现内存成功试下更改。

可见,这个内核函数在做属性更改的同时做了标志检查,但是还是存在绕过的可能。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值