更改虚拟页面权限

时间:2019-12-25 12:52:21

标签: c linux linux-kernel driver

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

1 个答案:

答案 0 :(得分:0)

您需要这个吗?

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

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

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

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