NX标志如何工作?

时间:2010-01-30 16:29:57

标签: computer-architecture

您能解释一下NX旗帜是什么以及它是如何运作的(请提供技术支持)?

3 个答案:

答案 0 :(得分:4)

它标记了虚拟内存系统和TLB(CPU用于解析虚拟内存映射的结构)中不可执行的内存页面。如果要从这样的页面执行任何程序代码,CPU将发生故障并将控制权转移到操作系统以进行错误处理。

程序通常在只读存储器部分中有二进制代码和静态数据,如果他们尝试在那里写入,CPU将发生故障然后操作系统通常会杀死应用程序(这称为分段错误或访问违规)。

出于安全原因,程序的读/写数据存储器默认情况下通常受NX保护。这可以防止攻击者将某些应用程序的恶意代码作为数据提供,使应用程序将其写入其数据区,然后以某种方式执行该代码,通常是应用程序中的缓冲区溢出/下溢漏洞,覆盖函数的返回地址堆栈中包含数据区域中恶意代码的位置。

一些合法的应用程序(最着名的是高性能模拟器和JIT编译器)也需要执行它们的数据,因为它们在运行时编译代码,但它们专门分配内存而没有为此设置NX标志。

答案 1 :(得分:2)

来自Wikipedia

  

NX位,代表No   eXecute是一种用于CPU的技术   分离内存区域以供使用   通过处理器的存储   说明(或代码)或存储   数据,通常只找到一个功能   在哈佛架构处理器。   但是,NX位正在出现   越来越多地用于传统的冯   Neumann架构处理器,用于   安全原因。

     

支持的操作系统   NX位可能标记某些区域   内存为不可执行文件。该   然后处理器将拒绝执行   驻留在这些领域的任何代码   记忆。一般技术,已知   作为可执行空间保护,是   用来防止某些类型的   恶意软件接管   计算机通过插入他们的代码   另一个程序的数据存储区域   并从内部运行自己的代码   这个部分;这被称为a   缓冲区溢出攻击。

答案 2 :(得分:0)

查看维基百科上使用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状态,即是否为a启用或禁用DEP   可以在Windows任务的“进程”选项卡上查看特定进程   管理器。

另请参阅MSDN知识库中有关DEP的here。关于这是如何工作的,有一个非常详细的解释here

希望这有帮助, 最好的祝福, 汤姆。