Я пытаюсь добавить CSCRIPT.exe в качестве исключения из DEP (Data Execution Prevention) в Windows Server 2008 R2. CSCRIPT.exe находится в двух местах: C: \ Windows \ System32 и C: \ Windows \ SysWOW64. Местоположение System32 - это 64-разрядная версия приложения, а 64-разрядные приложения не могут быть добавлены в DEP согласно Microsoft (и предупреждающее сообщение, которое я получаю при попытке добавить его в DEP). Попытка добавить версию SysWOW64 дает полностью другое сообщение об ошибке / предупреждении. «Эта программа должна работать с включенным DEP, вы не можете его выключить».
Я пробовал переименовать и переместить CSCRIPT.exe в другое место и / или переименовать его без разницы. Для этого варианта использования DEP должен быть включен, а для целей этого конкретного вопроса - мне нужно отключить DEP только для этого приложения.
Я попытался использовать CSCRIPT.exe из Windows Server 2003. Я успешно могу добавить этот файл в DEP. Однако что-то меня очень беспокоит в использовании старой версии. Я чувствую, что могу представить угрозу безопасности или проблему с версией.
Есть ли другой метод, который я мог бы использовать для добавления версии CSCRIPT.exe для SysWOW64 в список DEP? Или подходящее исправление - это обходной путь версии Windows Server 2003?
РЕДАКТИРОВАТЬ: Я понимаю, что с этим конкретным вопросом может потребоваться что-то «дать». Возможно, я не смогу найти общий язык. Если это так, пусть будет так. Я не хочу тратить время и силы на изобретение велосипеда, если в этом нет необходимости. Спасибо!
Очень интересный вопрос. Раньше я видел некоторые сбои DEP из cscript.exe. Это раздражает.
VBScript предшествовал DEP в Windows, и поэтому изначально он не был разработан с учетом DEP. Более того, когда вы начинаете взаимодействовать со старыми сторонними интерфейсами COM и OLE в своих сценариях, они могут вызывать сбои NX, и в этом виноват cscript.exe. Обычно так и бывает.
Однако что-то меня очень беспокоит в использовании старой версии. Я чувствую, что могу представить угрозу безопасности или проблему с версией.
Мне немного смешно, что вы так сказали, потому что отключение DEP для такой программы, как cscript.exe, будет путь больший риск для безопасности, чем использование версии 2003 года.
Вы не можете отключить DEP для 64-битных процессов, точка.
В целях совместимости приложений, когда для DEP задан уровень политики OptOut, можно выборочно отключить DEP для отдельных 32-разрядных приложений. Однако DEP всегда включен для 64-битных приложений.
http://technet.microsoft.com/en-us/library/cc738483(v=WS.10).aspx
Таким образом, остается 32-битная версия cscript.exe "SysWOW64" ... однако современные исполняемые файлы могут и обычно помечаются "вы не можете выключить DEP для меня", флаг. Примерно так же, как исполняемый файл может быть помечен как поддерживающий большое адресное пространство и т. Д.
Технически это /NXCOMPAT
флаг, с которым был скомпилирован исполняемый файл. Это переключатель компоновщика. Старая версия исполняемого файла 2003 года не была скомпилирована с этим переключателем, поэтому вы можете поместить ее в список исключений DEP, но не в версию 2008 года.
Но подождите, это еще не все! Если вы все еще хотите использовать версию SysWoW64 \ cscript.exe 2008 года, все, что вам нужно сделать, это скопировать исполняемый файл, а затем запустить:
editbin /NXCOMPAT:NO C:\cscript.exe
Теперь вы можете добавить его в список исключений DEP. Editbin.exe поставляется с Visual Studio, Windows SDK и т. Д.
Получайте удовольствие, вставляя код в стек или кучу памяти и разветвляя указатель инструкции для его выполнения!