2011-12-28 1 views
2

Есть ли манифест сборки (или, возможно, флаг изображения PE), чтобы отказаться от защиты NoExecute (или отказаться от нее)?Совместимость с Win32 App: есть ли явная запись для вывода моего приложения из NoExecute?


По умолчанию, 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> 

или способность, чтобы отказаться от «работает как обычный пользователь» защиты:

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

Примечание: я не думаю, что есть способ сделать выбор в или вне, защиты NX. Так что если ответ No, это нормально. Но я все еще спрашиваю, потому что я могу ошибаться.

ответ

2

Вы можете выбрать в с IMAGE_DLLCHARACTERISTICS_NX_COMPAT (и/или SetProcessDEPPolicy)

Если установка системы не AlwaysOn (не может быть установлен в GUI IIRC), то вы можете отказаться с SetProcessDEPPolicy

родительский процесс может заставить DEP с PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE на Vista +

Older ATL code и некоторые третьи партии DRM/copyprotection вещи имеют специальную обработку и не будут захватываться DEP, когда система находится в режиме отказа от применения (не уверен AlwaysOn)

Чтобы использовать «SetProcessDEPPolicy» в XP.SP2/2003.SP1, вызовите недокументированную функцию NtSetInformationProcess.

+0

Возможно, вам стоит упомянуть Editbin.exe и его параметр/nxcompat. –

+0

@HansPassant Хорошая точка, но не все используют программную цепочку MS, и если они это сделают, они могут установить параметр в командной строке или настройках проекта (http://msdn.microsoft.com/en-us/library/ms235442%28v=vs .80% 29.aspx) – Anders

+0

Он программист .NET, как и многие другие. –

Смежные вопросы