OS - NX位和有效无效位

时间:2016-03-26 15:34:28

标签: operating-system segmentation-fault paging

我的理解:

将页面的NX位设置为高将意味着只要某个程序尝试执行该页面中的代码,就会导致分段错误。

还有 有效无效位,访问标记为无效的页面也会导致分段错误。

所以问题是:

为什么当你已经有一个有效无效位时,NX位不是冗余的?标记页面有效 NX是什么意思?

1 个答案:

答案 0 :(得分:1)

首先,我要略微改变术语。我没有使用有效/无效之类的术语,而是将它们替换为现在/不存在。

可以某种方式(读取,写入或执行)访问标记为存在的页面。标记为不存在的页面无法直接访问(如果有的话)。如果可以访问它,则必须先将其从某种类型的后备存储(磁盘/闪存/ ...)加载到内存中。

NX位仅控制内存页面是否具有执行权限。为什么控制执行权限很重要?它有助于锁定系统以帮助防止执行任意代码。

因此,标记为NX且不存在的页面是没有执行权限的页面,但可能需要从后备存储加载。

如果您没有NX位(特别是在您的数据页面上),那么如果一些聪明的黑客在主管/内核模式下想出如何跳转到数据部分的代码,那么它的工作就会更容易执行您系统上的任意代码。

希望这有帮助。