Ben*_*ell 4 windows windows-server-2008-r2 cscript
我正在尝试将 CSCRIPT.exe 添加为 Windows Server 2008 R2 中 DEP(数据执行保护)的例外。CSCRIPT.exe 位于两个位置:C:\Windows\System32 和 C:\Windows\SysWOW64。System32 位置是应用程序的 64 位版本,根据 Microsoft 的规定,64 位应用程序无法添加到 DEP(以及我在尝试将其添加到 DEP 时收到的警告消息。)尝试添加 SysWOW64 版本给出了完全不同的错误/警告消息。“此程序必须在启用 DEP 的情况下运行,您无法将其关闭”。
我试过重命名和移动 CSCRIPT.exe 到不同的位置和/或重命名它没有区别。对于此用例,必须启用 DEP,并且出于此特定问题的目的 - 我需要仅为此应用程序禁用 DEP。
我尝试过的一件事是使用 Windows Server 2003 中的 CSCRIPT.exe。我能够成功地将此文件添加到 DEP。但是,使用旧版本确实让我感到困扰。我觉得我可能会引入安全风险或版本问题。
是否有不同的方法可以用来将 CSCRIPT.exe 的 SysWOW64 版本放入 DEP 列表?或者 Windows Server 2003 版本的解决方法是否合适?
编辑:我知道对于这个特定问题可能需要“给予”一些东西。我可能无法达成共识。如果是这样,那就这样吧。如果没有必要,我不想花时间和精力重新发明轮子。谢谢!
很有趣的问题。我以前从 cscript.exe 中看到过一些 DEP 错误。这很烦人。
VBScript 早于 Windows 中的 DEP,因此它最初的开发并没有考虑到 DEP。此外,当您开始在脚本中与旧的第三方 COM 和 OLE 接口交互时,它们可能会导致 NX 故障,而 cscript.exe 会为此承担责任。通常是后者。
但是,使用旧版本确实让我感到困扰。我觉得我可能会引入安全风险或版本问题。
这是一个有点滑稽,我认为你会说,因为禁用DEP的程序类似的Cscript.exe将是方式更安全风险比使用2003版本。
您不能为 64 位进程禁用 DEP,期间。
当 DEP 设置为 OptOut 策略级别时,出于应用程序兼容性的目的,可以有选择地禁用单个 32 位应用程序的 DEP。但是,始终为 64 位应用程序启用 DEP。
http://technet.microsoft.com/en-us/library/cc738483(v=WS.10).aspx
因此,您只能使用 cscript.exe 的 32 位“SysWOW64”版本……但是,现代可执行文件可以并且通常标有“您无法关闭我的 DEP”标志。就像一个可执行文件可以被标记为大地址空间感知等一样。
从技术上讲,它/NXCOMPAT是编译可执行文件时使用的标志。这是一个链接器开关。旧的 2003 版本的可执行文件不是用那个开关编译的,这就是为什么你可以把它放在 DEP 豁免列表中,而不是 2008 版本。
但是等等还有更多!如果您仍想使用 2008 版的 SysWoW64\cscript.exe,您只需复制可执行文件,然后运行:
editbin /NXCOMPAT:NO C:\cscript.exe
Run Code Online (Sandbox Code Playgroud)
现在您可以将其添加到 DEP 豁免列表中。Editbin.exe 随 Visual Studio、Windows SDK 等一起提供。
在堆栈或堆内存中注入代码并分支指令指针以执行它,玩得开心!
| 归档时间: |
|
| 查看次数: |
2881 次 |
| 最近记录: |