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

如何为.NET应用程序启用DEP或ASLR?,.net,security,aslr,data-execution-prevention,.net,Security,Aslr,Data Execution Prevention,我正在用VS2010编写我的程序,构建目标是.NET4。我相信兼容性标志在默认情况下是打开的。这是真的吗 默认情况下,.NET是否也与兼容?对于我的进程,ASLR是否默认打开?或者我是否必须在运行时请求它?是的,自.NET 2.0 SP1以来,标准.NET语言编译器已打开NXCOMPAT标志 ASLR本质上是借助JIT编译器在.NET程序中自动执行的。JIT编译的机器代码将放在哪里是不可预测的。尽管它可能会在完全相同的机器上重复,具有完全相同的CLR版本号和完全相同的启动代码流,并且将完全相同的

我正在用VS2010编写我的程序,构建目标是.NET4。我相信兼容性标志在默认情况下是打开的。这是真的吗


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

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

ASLR本质上是借助JIT编译器在.NET程序中自动执行的。JIT编译的机器代码将放在哪里是不可预测的。尽管它可能会在完全相同的机器上重复,具有完全相同的CLR版本号和完全相同的启动代码流,并且将完全相同的DLL注入到进程中。但不容易被恶意软件锁定。自.NET 3.5 SP1发布以来,ngen ed.NET程序集支持ASLR

更强大的是ASLR for data,这是针对攻击的更重要的反措施。这一点很重要,因为绝大多数攻击都是从恶意数据开始的。每次启动程序时,线程堆栈的位置、GC堆和静态数据都会发生变化。可能是相当痛苦的,你正在试图调试一个AVE顺便说一句


ASLR可防止已知的不可修补的安全缺陷。安全漏洞必须首先存在,在可验证代码中不常见。

通过“ngen ed”,您是指编译到x86/x64而不是“任何CPU”?不,我是指ngen.exe工具。ngen支持3.5SP1中的ASLR,也可能支持(?)4.0:ASLR默认打开吗?