如何为我的.NET应用程序启用DEP或ASLR?

Sco*_*ock 6 .net security data-execution-prevention aslr

我在VS2010中编写程序,构建目标是.NET 4.我相信默认情况下DEP兼容性标志是打开的.真的吗?

.NET默认情况下是否与ASLR兼容,并且默认为我的进程打开ASLR,或者我是否必须在运行时请求它?

Han*_*ant 14

是的,自.NET 2.0 SP1以来,标准.NET语言编译器打开了NXCOMPAT标志.

ASLR凭借JIT编译器在.NET程序中基本上是自动的.它将放置JIT编译的机器代码是不可预测的.虽然它可能在完全相同的机器上可重复,具有完全相同的CLR版本号和完全相同的启动代码流以及完全相同的DLL注入到流程中.但是,恶意软件不容易定位.自.NET 3.5 SP1发布以来,ngen-ed .NET程序集支持ASLR.

更为强大的是ASLR数据,这是对抗攻击的更重要的对策.重要的是因为绝大多数攻击都是从恶意数据开始的.每次启动程序时,线程堆栈的位置,GC堆和静态数据都会发生变化.您尝试调试AVE顺便说一句,可能会非常痛苦.

ASLR可以防止已知的无法修复的安全漏洞.安全漏洞必须首先存在,在可验证的代码中不常见.

  • 不,我的意思是ngen.exe工具.http://msdn.microsoft.com/en-us/library/6t9t5wcf%28VS.90%29.aspx (2认同)