Как сделать исключение для Cscript.exe в Windows Server 2008 R2?

Я пытаюсь добавить CSCRIPT.exe в качестве исключения для DEP (предотвращение выполнения данных) в Windows Server 2008 R2. CSCRIPT.exe находится в двух местах: C:\Windows\System32 и C:\Windows\SysWOW64. Местоположение System32 - это 64-разрядная версия приложения, и 64-разрядные приложения не могут быть добавлены в DEP в соответствии с Microsoft (и предупреждение, которое я получаю при попытке добавить его в DEP.) Попытка добавить версию SysWOW64 дает полностью другое сообщение об ошибке / предупреждение. Msgstr "Эта программа должна работать с включённым DEP, вы не можете её отключить".

Я попытался переименовать и переместить CSCRIPT.exe в другое место и / или переименовать его без разницы. Для этого варианта использования DEP должен быть включен, а для целей этого конкретного вопроса - мне нужно отключить DEP только для этого приложения.

Я попытался использовать CSCRIPT.exe из Windows Server 2003. Я могу успешно добавить этот файл в DEP. Однако, что-то действительно беспокоит меня об использовании старой версии. Я чувствую, что могу представить угрозу безопасности или проблему с версией.

Есть ли другой способ, который я мог бы использовать, чтобы получить версию CSCRIPT.exe для SysWOW64 в списке DEP? Или обходной путь для версии Windows Server 2003?

РЕДАКТИРОВАТЬ: Я понимаю, что что-то, возможно, нужно "дать" с этим конкретным вопросом. Возможно, я не смогу найти общий язык. Если это так, пусть будет так. Я не хочу тратить время и силы на то, чтобы заново изобрести колесо, если в этом нет необходимости. Спасибо!

1 ответ

Решение

Очень интересный вопрос Я видел некоторые ошибки 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-битная версия "sysWOW64" cscript.exe... однако современные исполняемые файлы могут и обычно помечаются флагом "Вы не можете отключить DEP на мне". Почти так же, как исполняемый файл может быть помечен как осведомленный о большом адресном пространстве и т. Д.

Технически это /NXCOMPAT признак того, что исполняемый файл был скомпилирован. Это переключатель компоновщика. Старая версия исполняемого файла 2003 года не была скомпилирована с этим переключателем, и поэтому вы можете поместить его в список исключений DEP, но не в версию 2008 года.

Но подождите, это еще не все! Если вы все еще хотите использовать версию SysWoW64\cscript.exe 2008 года, все, что вам нужно сделать, это скопировать исполняемый файл, а затем выполнить:

editbin /NXCOMPAT:NO C:\cscript.exe

Теперь вы можете добавить его в список исключений DEP. Editbin.exe поставляется с Visual Studio, Windows SDK и т. Д.

Получайте удовольствие, вставляя код в стек или кучную память и разветвляя указатель инструкций для его выполнения!

Другие вопросы по тегам