Win32 App Compat: есть ли запись манифеста, чтобы отказаться от моего приложения из NoExecute? - PullRequest
2 голосов
/ 28 декабря 2011

Существует ли манифест сборки (или, возможно, флаг образа PE) для отказа (или подписки) от защиты 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. Так что, если ответ Нет , это нормально. Но я все еще спрашиваю, потому что я могу ошибаться.

1 Ответ

2 голосов
/ 28 декабря 2011

Вы можете подписаться с помощью IMAGE_DLLCHARACTERISTICS_NX_COMPAT (и / или SetProcessDEPPolicy)

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

Родительский процесс может форсировать DEP с помощью PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE в Vista +

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

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

...