将页面的NX位设置为高将意味着只要某个程序尝试执行该页面中的代码,就会导致分段错误。
还有 有效无效位,访问标记为无效的页面也会导致分段错误。
为什么当你已经有一个有效无效位时,NX位不是冗余的?标记页面有效和 NX是什么意思?
答案 0 :(得分:1)
首先,我要略微改变术语。我没有使用有效/无效之类的术语,而是将它们替换为现在/不存在。
可以某种方式(读取,写入或执行)访问标记为存在的页面。标记为不存在的页面无法直接访问(如果有的话)。如果可以访问它,则必须先将其从某种类型的后备存储(磁盘/闪存/ ...)加载到内存中。
NX位仅控制内存页面是否具有执行权限。为什么控制执行权限很重要?它有助于锁定系统以帮助防止执行任意代码。
因此,标记为NX且不存在的页面是没有执行权限的页面,但可能需要从后备存储加载。
如果您没有NX位(特别是在您的数据页面上),那么如果一些聪明的黑客在主管/内核模式下想出如何跳转到数据部分的代码,那么它的工作就会更容易执行您系统上的任意代码。
希望这有帮助。