我有几个关于linux内核内存页面写保护的问题。Linux内核代码空间写保护
我怎么能计算出,如果内核 代码(文本段)是写 保护与否。我可以看看
/proc/<process-id>/map
以查看各种进程的内存映射。 但不知道在哪里寻找 内核代码的内存映射。如果内核代码段是写 保护,那么是否有可能 代码段的网页是 任何其他内核 级代码覆盖。换句话说, 是否在文本段页面上进行写保护 仅针对用户空间提供保护 代码将写入该文件段,还是将其保留在 内核空间代码中。
感谢
我有几个关于linux内核内存页面写保护的问题。Linux内核代码空间写保护
我怎么能计算出,如果内核 代码(文本段)是写 保护与否。我可以看看 /proc/<process-id>/map
以查看各种进程的内存映射。 但不知道在哪里寻找 内核代码的内存映射。
如果内核代码段是写 保护,那么是否有可能 代码段的网页是 任何其他内核 级代码覆盖。换句话说, 是否在文本段页面上进行写保护 仅针对用户空间提供保护 代码将写入该文件段,还是将其保留在 内核空间代码中。
感谢
代码在内核中运行具有当前地址空间的页表的直接访问,因此它可以通过检查这些检查写访问。可能有帮助您进行检查的功能,但我不太熟悉mm代码以指出它们。有更容易的方法吗?我不确定。
内核文本不能从用户空间写入。该文本可以另外受到保护,防止从内核代码写入(我认为这就是你正在谈论的内容)。这只是防止错误的基本保护。内核代码,如果真的想要,可以通过直接修改页面表来禁用该保护。
有一篇论文在谈论这件事。基本上,它使用一个小型管理程序来保护操作系统内核。
SecVisor:一种为商品操作系统提供终身内核代码完整性的微型系统管理程序。