【发布时间】:2010-01-30 16:29:57
【问题描述】:
您能否解释一下 NX 标志是什么以及它是如何工作的(请提供技术支持)?
【问题讨论】:
-
+1 来自我..有趣的问题。
您能否解释一下 NX 标志是什么以及它是如何工作的(请提供技术支持)?
【问题讨论】:
它在虚拟内存系统和 TLB(CPU 用于解析虚拟内存映射的结构)中标记内存页面不可执行。如果要从该页面执行任何程序代码,CPU 将发生故障并将控制权移交给操作系统进行错误处理。
程序通常将其二进制代码和静态数据保存在只读内存部分中,如果它们试图在那里写入,CPU 将出现故障,然后操作系统通常会终止应用程序(这称为分段错误或访问冲突)。
出于安全原因,程序的读/写数据存储器通常默认受 NX 保护。这可以防止攻击者向某些应用程序提供他的恶意代码作为数据,使应用程序将其写入其数据区域,然后以某种方式执行该代码,通常是通过应用程序中的缓冲区溢出/下溢漏洞,覆盖函数的返回地址在堆栈中与恶意代码在数据区的位置。
一些合法的应用程序(尤其是高性能仿真器和 JIT 编译器)也需要执行它们的数据,因为它们在运行时编译代码,但它们专门分配内存而没有为此设置 NX 标志。
【讨论】:
NX 位,代表否 eXecute,是一种用于 CPU 的技术 分隔内存区域以供使用 通过处理器的任一存储 指令(或代码)或存储 数据,通常只发现的特征 在哈佛架构处理器中。 然而,NX 位正在 越来越多地用于传统的冯 Neumann 架构处理器,用于 安全原因。
一个支持的操作系统 NX 位可能会标记某些区域 内存为不可执行。这 然后处理器将拒绝执行 驻留在这些领域的任何代码 记忆。一般技术,已知 作为可执行空间保护,是 用于防止某些类型的 恶意软件从接管 通过将代码插入计算机 另一个程序的数据存储区 并从内部运行自己的代码 本节;这被称为 缓冲区溢出攻击。
【讨论】:
查看使用 NX 位的维基百科上的“DEP”。至于提供技术答案,对不起,我对此知之甚少,只能引用:
数据执行保护 (DEP) 是现代中包含的一项安全功能 Microsoft Windows 操作系统,旨在防止 应用程序或服务从不可执行的内存区域执行代码。 ....
DEP 是在 Windows XP Service Pack 2 中引入的,并且包含在 Windows XP 中 Tablet PC Edition 2005、Windows Server 2003 Service Pack 1 及更高版本、Windows Vista 和 Windows Server 2008 以及所有较新版本的 Windows。 ...
硬件强制 DEP 在兼容 CPU 上启用 NX 位,通过 在 32 位 Windows 中自动使用 PAE 内核并在 64 位上提供本机支持 内核。 Windows Vista DEP 通过将内存的某些部分标记为打算 仅保存数据,然后启用 NX 或 XD 位的处理器将其理解为 不可执行。 这有助于防止缓冲区溢出攻击得逞。在 Windows Vista 中, 进程的 DEP 状态,即是否为某个进程启用或禁用了 DEP 可以在 Windows 任务的进程选项卡上查看特定进程 经理。
另请参阅 MSDN 关于 DEP 的知识库中的 here。有一个非常详细的解释 here 这是如何工作的。
希望这会有所帮助, 最好的祝福, 汤姆。
【讨论】: