更改虚拟页面权限

问题描述 投票:0回答:1

我试图通过将存储在sys_call_table中的指针替换为我实现的函数的指针来覆盖模块中的kill命令。我使用kallsyms_lookup_name() syscall来获取表的地址,并使用lookup_address()来获取页面的地址。现在,我的问题是内核使用r / w标志保护页面。那么,给定一个虚拟页面地址,是否可以修改r / w标志?

c linux linux-kernel driver
1个回答
0
投票

您需要这个吗?

https://elixir.bootlin.com/linux/v4.3/source/arch/arm/mm/pageattr.c#L68 \

至少,您可以更改内核模块的内存属性。另外,您也可以更改内核文本内存属性。

据我测试,如果我们尝试在内核模块中写入ro内存,则MMU将生成异常,并且您将看到“无效的虚拟内存”访问权限。

您必须传递虚拟内存地址。

© www.soinside.com 2019 - 2024. All rights reserved.