2

是否有程序集清单(或者可能是 PE 图像标志)选择退出(或选择加入)NoExecute 保护?


默认情况下,Windows 仅使用 NoExecute 保护来保护自己的二进制文件:

在此处输入图像描述

但我可能想选择我的可执行文件加入 NX 保护。

我还可能需要向用户表明我的应用程序与 NX 保护不兼容。我可以为他们做,而不是强迫用户手动查找并将我添加到列表中:

在此处输入图像描述

注意:我将此比作我选择以标准用户身份运行我的应用程序的能力:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  <security>
      <requestedPrivileges>
          <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
  </security>
</trustInfo>

或者选择退出“以标准用户身份运行”保护的能力:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  <security>
      <requestedPrivileges>
          <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
      </requestedPrivileges>
  </security>
</trustInfo>

注意:我认为没有办法选择加入或退出 NX 保护。因此,如果答案是否定的,那很好。但我仍然在问,因为我可能错了。

4

1 回答 1

2

您可以选择加入IMAGE_DLLCHARACTERISTICS_NX_COMPAT(和/或 SetProcessDEPPolicy)

如果系统设置不是 AlwaysOn(不能在 GUI IIRC 中设置),那么您可以使用SetProcessDEPPolicy选择退出

父进程可以在 Vista+ 上使用PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE强制 DEP

较旧的 ATL 代码和一些第 3 方 DRM/复制保护内容具有特殊处理,并且在系统处于退出模式时不会被 DEP 捕获(不确定 AlwaysOn)

要在 XP.SP2/2003.SP1 上使用“SetProcessDEPPolicy”,请调用未记录的NtSetInformationProcess函数。

于 2011-12-28T18:31:14.297 回答