VS2010에서 프로그램을 작성하고 있습니다. 빌드 대상은 .NET 4입니다. DEP 호환성 플래그가 기본적으로 설정되어 있다고 생각합니다. 그게 사실이야?.NET 응용 프로그램에서 DEP 또는 ASLR을 활성화하려면 어떻게합니까?
.NET은 기본적으로 ASLR과 호환되며 내 프로세스에서 ASLR이 기본적으로 설정되어 있습니까? 아니면 런타임에 요청해야합니까?
VS2010에서 프로그램을 작성하고 있습니다. 빌드 대상은 .NET 4입니다. DEP 호환성 플래그가 기본적으로 설정되어 있다고 생각합니다. 그게 사실이야?.NET 응용 프로그램에서 DEP 또는 ASLR을 활성화하려면 어떻게합니까?
.NET은 기본적으로 ASLR과 호환되며 내 프로세스에서 ASLR이 기본적으로 설정되어 있습니까? 아니면 런타임에 요청해야합니까?
예, NXCOMPAT 플래그는 .NET 2.0 SP1 이후 표준 .NET 언어 컴파일러에서 설정됩니다.
ASLR은 JIT 컴파일러 덕분에 .NET 프로그램에서 본질적으로 자동입니다. JIT 컴파일 된 기계 코드를 어디에 둘 것인지 예측할 수 없습니다. CLR의 정확히 동일한 리비전 번호와 시작 코드의 정확한 흐름 및 동일한 DLL이 프로세스에 주입되는 것과 똑같은 시스템에서 반복 가능할 수 있습니다. 멀웨어가 쉽게 타겟팅 할 수 없습니다. ngen-ed .NET 어셈블리는 .NET 3.5 SP1 릴리스 이후 ASLR을 지원합니다.
데이터에 대한 ASLR이 훨씬 더 강력 할수록 공격에 대한 더 중요한 대응책입니다. 대다수의 공격은 악의적 인 데이터로 시작되기 때문에 중요합니다. 프로그램을 시작할 때마다 스레드의 스택 위치, GC 힙 및 정적 데이터가 변경됩니다. 당신이 AVE btw를 디버그하려고 할 때 꽤 고통 스러울 수 있습니다.
ASLR은 알려진 unpatchable 보안 결함으로부터 보호합니다. 보안 결함은 검증 가능한 코드에서 흔히 발생해야합니다.
"ngen-ed"는 "Any CPU"대신 x86/x64로 컴파일한다는 의미입니까? –
아니요, ngen.exe 도구를 의미합니다. http://msdn.microsoft.com/en-us/library/6t9t5wcf%28VS.90%29.aspx –
ngen은 3.5 SP1 및 아마도 (?) 4.0에서 ASLR을 지원합니다. http://msdn.microsoft.com/ en-us/magazine/dd569747.aspx # id0400023 –