2010-07-03 5 views

답변

12

예, 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 보안 결함으로부터 보호합니다. 보안 결함은 검증 가능한 코드에서 흔히 발생해야합니다.

+0

"ngen-ed"는 "Any CPU"대신 x86/x64로 컴파일한다는 의미입니까? –

+2

아니요, ngen.exe 도구를 의미합니다. http://msdn.microsoft.com/en-us/library/6t9t5wcf%28VS.90%29.aspx –

+0

ngen은 3.5 SP1 및 아마도 (?) 4.0에서 ASLR을 지원합니다. http://msdn.microsoft.com/ en-us/magazine/dd569747.aspx # id0400023 –