本文共 395 字,大约阅读时间需要 1 分钟。
在arm体系下,内核在较早版本的读写限制没有开启,至少在4.4版本之前。但是在4.19之后的内核,默认开启。
这里有个set_mem_rw(unsigned long ,int)
在19版本上理论上可以更改内存的读写属性,但是采取set_mem_rw = (void *)kallsyms_lookup_name("set_memory_rw");
进行导出引用,发现根本不管用。我还以为这里内核写的有错误。
我们看到红色框里面的flag & VM_ALLOC 标志如果不属于这个,那么就直接退出。
可见,这个内核函数在做属性更改的同时做了标志检查,但是还是存在绕过的可能。
转载地址:http://unjvb.baihongyu.com/