Win32 App Compat:是否有一个清单条目可以选择我的应用程序退出NoExecute?

时间:2011-12-28 18:13:03

标签: security winapi manifest fusion

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


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

enter image description here

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

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

enter image description here

  

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

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

或选择退出&#34;作为标准用户运行的能力&#34;保护:

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

注意:我认为有一种选择加入或退出NX保护的方法。所以如果答案是,那很好。但我还在问,因为我可能错了。

1 个答案:

答案 0 :(得分:2)

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

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

父进程可以在Vista +

上强制使用PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE DEP

Older ATL code和某些第三方DRM / copyprotection内容有特殊处理,当系统处于退出模式时不会被DEP困住(不确定AlwaysOn)

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