티스토리 뷰

Application/Debug

[OS] Windows XP 서비스팩 2의 보안기술

알 수 없는 사용자 2005. 11. 1. 01:11


















아미루(wany7980)   http://cafe.naver.com/kav/1979 이 게시물의 주소를 복사합니다

 






출처 : http://www.microsoft.com/korea/

원문 : http://www.microsoft.com/technet/prodtechnol/winxppro/ko/maintain/sp2mempr.mspx

저자 : Starr Andersen(기술 집필가), Vincent Abella(기술 편집자)

------------------------------------------------------------------------------------------------------------------------------------------------

"Windows XP 서비스 팩 2에서 달라진 기능 3부 :?Windows XP 서비스 팩 2에 포함된 메모리 보호 기술"

데이터 실행 방지


데이터 실행 방지는 어떤 기능을 수행합니까?


데이터 실행 방지(DEP)는 하드웨어 및 소프트웨어 기술로 악의적인 코드 이용을 방지하기 위해 메모리를 추가로 검사합니다. Windows XP SP2에서는 하드웨어 및 소프트웨어에서 모두 DEP를 사용합니다.

하드웨어 적용 DEP



하드웨어 적용 DEP는 메모리 위치가 명시적으로 실행 코드를 포함하지 않은 경우 프로세스의 모든 메모리 위치를 비실행으로 표시합니다. 비실행 메모리 위치에서 코드 삽입 및 실행을 시도하는 일종의 공격이 있습니다. DEP는 이러한 공격을 차단하고 예외를 발생시켜 이를 방지합니다.

하드웨어 적용 DEP는 프로세서 하드웨어를 사용하여 해당 메모리에서 코드를 실행하지 않아야 함을 나타내는 특성을 메모리에 표시합니다. DEP는 일반적으로 PTE(Page Table Entry)의 1비트를 변경하여 메모리 페이지를 표시하면서 가상 메모리 페이지별로 작동됩니다.

DEP의 실제 하드웨어 구현 및 가상 메모리 페이지 표시 방법은 프로세서 아키텍처에 따라 다양합니다. 그러나 해당 특성 집합으로 표시된 페이지에서 코드가 실행되는 경우 하드웨어 적용 DEP를 지원하는 프로세서에서 예외가 발생할 수 있습니다.

Advanced Micro Devices™(AMD) 및 Intel? Corporation에서 DEP와 호환되는 Windows 호환 아키텍처를 정의하고 출시했습니다.

Windows XP 서비스 팩 2부터 32비트 버전의 Windows에서는 AMD에서 정의한 대로 NX(No-Excute) 페이지 보호 프로세서 기능을 사용하거나 Intel에서 정의한 대로 EDB(Execute Disable Bit) 기능을 사용합니다. 이러한 프로세서 기능을 사용하려면 프로세서를 PAE(실제 주소 확장) 모드에서 실행하고 있어야 합니다. 64비트 버전의 Windows XP에서는 64비트 확장의 NX 프로세서 기능 및 IPF 프로세서의 액세스 권한 PTE(Page Table Entry) 필드의 특정 값을 사용합니다.

32비트 및 64비트 프로세서의 모든 차후 버전에서 하드웨어 적용 데이터 실행 방지를 지원하는 것이 바람직합니다. Microsoft에서는 프로세서 공급업체와 지속적으로 협력하여 DEP 기술의 채택 및 개발을 장려할 것입니다.

소프트웨어 적용 DEP



데이터 실행 방지 보안 검사의 추가 집합이 Windows XP SP2에 추가되었습니다. 소프트웨어 적용 DEP로 알려진 이 검사는 Windows에서 예외 처리 메커니즘 사용을 줄이도록 설계되었습니다.

소프트웨어 적용 DEP는 Windows XP SP2를 실행할 수 있는 모든 프로세서에서 실행됩니다. 기본적으로 소프트웨어 적용 DEP는 프로세서의 하드웨어 적용 DEP 기능과 상관없이 제한된 시스템 바이너리만 보호합니다.

이 기능의 적용 대상은 누구입니까?


응용 프로그램 및 드라이버 개발자는 데이터 실행 방지 및 지원 플랫폼에서 실행되는 소프트웨어의 요구 사항에 대하여 알고 있어야 합니다. JIT(Just-In-Time) 코드를 생성하거나 기본 프로세스 스택 또는 힙에서 메모리를 실행하는 응용 프로그램을 사용하는 경우 DEP 요구 사항에 유의해야 합니다.

드라이버 개발자는 하드웨어 적용 DEP를 지원하는 플랫폼의 PAE 모드를 알아야 합니다. 드라이버 호환성을 향상시키기 위해 Windows XP 서비스 팩 2 시스템의 PAE 모드 동작이 변경되었습니다.

XP 서비스 팩 2에서 이 기능에 추가된 새로운 기능은 무엇입니까?


32비트 버전의 Windows 및 응용 프로그램에서 데이터 실행 방지


하드웨어 적용 DEP



Windows에서 데이터 실행 방지 기능의 전반적인 동작 방식은 32비트 버전 및 64비트 버전의 Windows와 거의 동일합니다. DEP를 비롯하여 메모리 보호 모델은 응용 프로그램 및 드라이버 개발자를 위해 일관성 있게 32비트 및 64비트 버전의 Windows에서 모두 동일하게 디자인되었습니다.

응용 프로그램 개발자는 사용자 모드의 DEP 동작에 대해 알고 있어야 합니다. 사용자 모드 DEP 예외는 Windows 시스템에서 STATUS_ACCESS_VIOLATION (0xc0000005)이 됩니다. EXCEPTION_RECORD 구조 안에 위치한 ExceptionInformation의 첫 번째 매개 변수에는 발생한 액세스 위반 유형이 들어갑니다. ExceptionInformation[0]?의 값 8은 액세스 위반이 예외 위반이었음을 나타냅니다.

대부분의 프로세스에서 STATUS_ACCESS_VIOLATION 예외는 처리되지 않은 예외이며 그 결과 프로세스가 종료됩니다.

또한 DEP는 커널 모드의 드라이버에 적용됩니다. 커널 모드의 메모리 영역에 대한 DEP를 선택적으로 사용할 수 있게 설정하거나 사용할 수 없게 설정할 수 없습니다. 32비트 버전의 Windows에서 DEP는 기본적으로 스택에 적용됩니다. 이 경우는 64비트 버전의 Windows 커널 모드 DEP와 다른데, 여기에서는 스택, 페이지된 풀 및 세션 풀에 데이터 실행 방지(DEP)가 적용됩니다.

DEP가 설정되어 있으면 장치 드라이버가 스택에서 코드를 실행할 수 없습니다. 커널 모드에서 DEP 액세스 위반이 발생하면 오류 검사 0xFC: ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY가 실행됩니다.

소프트웨어 적용 DEP



소프트웨어 적용 DEP는 Windows의 예외 처리 메커니즘에서 추가 검사를 수행합니다. 프로그램 이미지 파일이 SafeSEH(Safe Structured Exception Handling)를 사용하여 만들어진 경우 소프트웨어 적용 DEP는 예외가 디스패치되기 전에 예외 처리기가 이미지 파일 내에 있는 함수 테이블에 등록되어 있는지 확인합니다.

프로그램 이미지 파일이 SafeSEH를 사용하여 만들어지지 않은 경우 소프트웨어 적용 DEP는 예외가 디스패치되기 전에 예외 처리기가 실행 가능으로 표시된 메모리 영역 내에 위치하는지 확인합니다.

이 변경 사항이 중요한 이유는 무엇입니까? 이로 인해서 줄어드는 위협은 무엇입니까?



데이터 실행 방지의 가장 큰 장점은 기본 힙, 여러 스택 및 메모리 풀과 같은 데이터 페이지에서 코드가 실행되지 않도록 하는 것입니다. 일반적인 시스템 작업의 경우 코드는 보통 기본 힙 및 스택에서 실행되지 않습니다. 하드웨어 적용 DEP는 이러한 위치에서 실행 중이며 실행이 시작될 때 예외를 발생시키는 코드를 검색합니다. 예외가 처리되지 않으면 프로세스가 종료됩니다. 커널 모드에서 보호된 메모리의 코드를 실행하면 오류 검사가 실행됩니다.

오류 검사로 인해 프로세스가 종료되거나 시스템 장애가 발생하는 것은 바람직한 일은 아니지만 이렇게 하면 악의적인 코드가 실행되는 것을 방지할 수 있습니다. 시스템에서 악의적인 코드가 실행되지 못하게 하면 시스템이 손상되거나 악의적인 코드가 전파되는 것을 막을 수 있습니다. 악의적인 코드가 전파되어 나타나는 악영향은 오류 검사에 의해 프로세스가 종료되는 경우보다 더 심각한 경우가 많습니다.

DEP를 사용하여 특정 종류의 보안 침해를 줄일 수 있습니다. 특히 데이터 실행 방지를 사용하면 바이러스나 다른 공격으로 인해 추가 코드가 입력되고 이와 같이 입력된 코드가 실행되는 것을 방지할 수 있습니다. DEP가 있는 시스템에서는 이와 같이 입력된 코드가 실행되면 예외가 발생할 수 있습니다. 소프트웨어 적용 DEP를 사용하면 Windows 내에서 예외 처리 메커니즘 사용을 줄일 수 있습니다.

DEP의 두 번째 장점은 응용 프로그램 및 드라이버 개발자에게 기술적으로 유용하다는 점입니다. 데이터 실행 방지 기술을 사용하면 개발자는 명시적으로 데이터 페이지를 실행 가능으로 표시하지 않고는 데이터 페이지에서 코드를 실행할 수 없습니다.

작동 방식의 차이는 무엇입니까?


응용 프로그램 호환성


일부 응용 프로그램의 동작이 데이터 실행 방지와 호환되지 않습니다. Just-In-Time 코드 생성과 같은 동적 코드 생성을 수행하며 생성된 코드를 실행 권한을 사용해서 명시적으로 표시하지 않은 응용 프로그램은 데이터 실행 방지와 호환성 문제가 발생할 수 있습니다. SafeSEH를 사용하여 만들어지지 않은 응용 프로그램은 실행 메모리 영역에 해당 응용 프로그램의 예외 처리기가 있어야 합니다.

DEP 위반을 시도하는 응용 프로그램에는 상태 코드가 STATUS_ACCESS_VIOLATION (0xC0000005)인 예외가 발생합니다. 응용 프로그램에 실행 메모리가 필요한 경우 가상* 메모리 할당 함수의 메모리 보호 인수에 PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE 또는 PAGE_EXECUTE_WRITECOPY를 지정하여 명시적으로 이 특성을 해당 메모리에 설정해야 합니다. malloc()HeapAlloc() 함수를 사용하는 힙 할당은 실행할 수 없습니다.

드라이버 호환성


데이터 실행 방지의 드라이버 호환성 문제는 PAE 모드로 인한 호환성 문제가 대부분입니다.

참고 PAE는 하드웨어 적용 DEP를 지원하는 프로세서가 있는 시스템에서만 필요합니다.

코드 생성을 수행하거나 다른 기술을 사용하여 실시간으로 실행 코드를 생성하는 드라이버에서는 DEP가 호환성 문제를 일으킬 수도 있습니다. DEP가 64비트 버전의 Windows에 로드된 드라이버에 대해서는 항상 설정되어 있기 때문에 위와 같이 동작하는 많은 드라이버가 수정되었지만 모든 드라이버가 업데이트된 것은 아닙니다. 그러나 이러한 기술을 사용하는 드라이버는 거의 없으며 DEP 단독으로는 드라이버 호환성 문제를 많이 일으키지 않습니다.

드라이버 호환성 문제가 가장 관건이 되는 경우는 32비트 시스템에서 PAE(실제 주소 확장) 모드를 실행하는 경우입니다. PAE 모드를 사용하면 프로세서에서 4GB 이상의 메모리에 주소를 지정할 수 있습니다. PAE 메모리 페이징 및 비 PAE 메모리 페이징 구성표 간의 가장 큰 차이점은 PAE 모드(2 수준 대신 3 수준)에서 필요한 추가 페이징 수준입니다.

일부 드라이버는 PAE 모드에서 로드되지 못할 수 있는데 이는 해당 장치에서 64비트 주소 지정을 수행할 수 없거나 드라이버가 PAE 모드에서 4GB를 초과하는 RAM이 필요한 것으로 가정하기 때문입니다. 그러한 드라이버는 PAE 모드일 때 언제나 64비트 주소를 받을 것이고 드라이버나 해당 장치에서 주소를 해석할 수 없다고 예상합니다.

다른 드라이버는 PAE 모드에서 로드될 수 있지만 직접 시스템 PTE(Page Table Entries)를 수정하여 시스템을 불안정하게 만들 수 있습니다. 이러한 드라이버는 32비트 PTE를 예상하지만 PAE 모드에서는 32비트 대신 64비트 PTE를 받게 됩니다.

드라이버 PAE 호환성과 관련된 가장 큰 문제는 직접 메모리 액세스(DMA) 전송 및 맵 레지스터 할당입니다. DMA를 지원하는 많은 장치(주로 32비트 어댑터들)는 64비트의 실제 주소를 지정할 수 없습니다.

32비트 모드에서 실행될 때는 장치가 모든 실제 주소 공간의 주소를 지정할 수 있습니다. PAE 모드에서는 데이터가 4GB 이상의 실제 주소에 존재할 수 있습니다. 이러한 제약 조건이 있는 장치가 이 시나리오에서 작동할 수 있도록 Windows 2000 Server 제품군 이상에서는 맵 레지스터에서 표시하는 32비트 주소를 제공하여 DMA 트랜잭션을 위해 이중 버퍼링을 제공합니다. 장치는 32비트 주소에 대해 DMA 트랜잭션을 수행할 수 있고 커널은 드라이버에 제공된 64비트 주소로 메모리를 복사합니다.

시스템이 PAE 모드를 설정하지 않은 채로 실행될 때는 32비트 장치의 해당 맵 레지스터를 실제 메모리에서 백업하지 않아도 됩니다. 즉, 모든 장치와 드라이버가 32비트 주소 공간 안에 포함되어 있기 때문에 이중 버퍼링이 필요하지 않습니다. 64비트 프로세서 기반 컴퓨터에서의 32비트 장치용 드라이버 테스트를 바탕으로 할 때 클라이언트에서 테스트한 대부분의 DMA 지원 드라이버는 무제한의 맵 레지스터를 예상하는 것으로 보입니다.

호환성 문제를 줄이기 위해 Windows XP 서비스 팩 2에서는 HAL(hardware abstraction layer)이 32비트 HAL DMA처럼 동작하도록 변경되었습니다. 시스템이 PAE 모드로 실행 중이면 변경된 HAL에서 무제한 맵 레지스터를 승인합니다. 또한 커널 메모리 관리자는 4GB 이상의 실제 주소를 모두 무시합니다.

4GB 한도를 초과하는 시스템 RAM은 Windows에서 주소를 지정할 수 없게 만들어 시스템에서 사용할 수 없게 됩니다. 4GB로 주소 공간을 제한하므로 32비트 DMA 버스 마스터 기능이 있는 장치에서는 4GB 한도를 초과하는 주소를 사용하는 트랜잭션을 볼 수 없습니다. 이와 같이 변경하면 트랜잭션을 이중으로 버퍼링할 필요가 없으므로 일부 드라이버에서 올바른 이중 버퍼링 지원 구현과 관련된 버그를 방지할 수 있게 됩니다.

HAL 및 메모리 관리자가 이와 같이 변경되면 데이터 실행 방지를 사용하는 Windows XP 서비스 팩 2를 실행하는 시스템에서 장치 드라이버 호환성 문제가 최소화될 것으로 예상됩니다.

시스템 호환성


DEP 호환성과 관련하여 마지막으로 고려할 사항은 4GB를 초과하는 실제 RAM을 지원할 수 있게 설계되어 있지 않는데도 PAE 모드가 설정되어 있는 시스템으로 인한 문제입니다. Microsoft는 프로세서가 PAE 모드에서 실행 중인 경우 하드웨어 적용 DEP 지원 프로세서를 사용하는 일부 시스템에서 부팅이 되지 않거나 다른 안정성 문제가 발생하는 것을 테스팅 과정에서 발견했습니다.

PAE 모드는 NX 프로세서 기능을 사용하기 위해 필수적입니다. 그러므로 시스템 디자이너 및 펌웨어 엔지니어는 시스템 칩셋 및 펌웨어가 4GB를 초과하는 실제 RAM을 지원하도록 설계되어 있지 않아도 시스템이 PAE 모드에서 실행될 수 있다는 점을 알아야 합니다.

특히 페이지 테이블 항목을 해석하여 운영 체제에서 실행한 명령을 확인하는 시스템 펌웨어를 고려해야 합니다. 프로세서가 PAE 모드에서 실행 중인 경우 페이지 테이블 항목의 길이는 64비트로 확장됩니다. 시스템 디자이너와 펌웨어 개발자는 운영 체제에서 실행한 명령을 안전하게 확인하는 방법에 대한 자세한 내용을 해당 프로세서 및 칩셋 공급업체에 문의하는 것이 좋습니다.

AMD 프로세서로 작업하는 시스템 디자이너는 "BIOS and Kernel Developer’s Guide for AMD Athlon™ 64 and AMD Opteron Processors."에서 자세한 정보를 얻을 수 있습니다. 이 설명서를 참조하려면 AMD Athlon™ 64 웹 사이트(http://go.microsoft.com/fwlink/?LinkId=28165)로 이동하여 "BIOS and Kernel Developer’s Guide for AMD Athlon™ 64 and AMD Opteron Processors."를 클릭하십시오.

Intel에서는 SMM(System Management Mode)에 대한 자세한 정보를 공개적으로 제공하지 않습니다. Intel 프로세서로 작업하는 시스템 디자이너는 Intel에 직접 문의하여 자세한 정보를 얻어야 합니다.

Windows의 PAE 모드 지원에 대한 자세한 내용은 Microsoft 웹 사이트(http://go.microsoft.com/fwlink/?LinkId=28166)에서 "Physical Address Extension - PAE Memory and Windows"를 참조하십시오.

이러한 문제를 해결하는 방법은 무엇입니까?


메모리의 실행 영역이 필요한 응용 프로그램에서 메모리를 할당할 때 PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE 또는 PAGE_EXECUTE_WRITECOPY 특성을 사용해야 합니다. 추가로 응용 프로그램은 기본 프로세스 힙이나 스택에서 실행할 수 없습니다.

DEP와 호환되지 않는 작업을 수행하는 대부분의 응용 프로그램은 호환성을 위해 업데이트해야 합니다. 또한 응용 프로그램은 SafeSEH를 사용하여 만들어지거나 해당 예외 처리기가 명시적으로 실행으로 표시된 메모리에 위치하게 해야 합니다.

응용 프로그램에서 VirtualAlloc() API(응용 프로그래밍 인터페이스)를 사용하여 적절한 메모리 보호 옵션을 적용하여 실행 메모리를 할당할 수 있습니다. 적어도 PAGE_EXECUTE 메모리 보호 옵션은 사용해야 합니다. 실행 코드가 생성된 이후에 응용 프로그램에서 메모리 보호를 설정하여 할당된 메모리에 쓰기 권한을 금지하는 것이 좋습니다.

응용 프로그램은 VirtualProtect() API를 사용하여 할당된 메모리에 쓰기 권한을 금지할 수 있습니다. 쓰기 권한을 허용하지 않으면 프로세스 주소 공간의 실행 영역을 최대한 보호할 수 있습니다.

악의적인 프로세스가 실행 영역에 코드를 삽입하기 위해 액세스를 시도하면 STATUS_ACCESS_VIOLATION 쓰기 예외가 발생합니다. 응용 프로그램은 주소 공간의 실행 영역을 가능한 작게 만들어야 합니다. 이렇게 하면 실행 메모리가 프로세스 주소 공간으로 삽입되고 실행되는 공격 범위가 줄어듭니다.

또한 정교한 응용 프로그램에서는 해당 가상 메모리의 레이아웃을 제어하고 실행?영역을 만들 수 있습니다. 이러한 응용 프로그램은 비실행 영역보다 낮은 메모리 공간에서 실행 영역을 찾으려고 합니다. 비실행 영역 아래에서 실행 영역을 찾으려는 목적은 버퍼 오버플로가 실행 메모리로 오버플로되지 않게 하기 위해서입니다.

소수의 실행 파일 및 라이브러리는 이미지 파일의 데이터 섹션에 실행 코드를 포함하고 있을 수 있습니다. 응용 프로그램이 데이터 섹션에 썽크로 알려진 작은 코드 세그먼트를 두는 경우가 있습니다. 그러나 섹션에 실행 특성이 적용되지 않은 경우 DEP는 메모리에 로드된 이미지 파일의 섹션을 비실행으로 표시합니다.

그러므로 데이터 섹션에 있는 실행 코드를 코드 섹션으로 마이그레이션해야 하거나 실행 코드를 포함하는 데이터 섹션을 실행으로 명시적으로 표시해야 합니다. 실행 코드가 있는 섹션에 대해 해당하는 섹션의 Characteristics 필드에 실행 특성 IMAGE_SCN_MEM_EXECUTE (0x20000000)를 추가해야 합니다.

Microsoft Visual Studio 제품과 함께 배포되는 Microsoft linker는 /SECTION 링커 옵션을 사용하여 섹션에 실행 특성을 추가할 수 있습니다. /SECTION 링커 옵션은 다음과 같은 형식을 가집니다.

/SECTION:Name,[E][R][W][S][D][K][L][P][X][,ALIGN=#]

E 값은 실행 특성 (0x20000000)을 나타냅니다. /SECTION 및 기타 Microsoft linker 옵션에 대한 자세한 내용은 MSDN 웹 사이트(http://go.microsoft.com/fwlink/?LinkId=28167)를 참조하십시오.

추가적으로 Microsoft COFF Binary File Editor(Editbin.exe) 유틸리티는 기존 이미지의 섹션 특성을 변경하는 데 사용할 수 있습니다. Editbin 유틸리티는 다음과 같은 형식을 가진 /SECTION 옵션을 사용합니다.

/SECTION:Name[=newname][,[[!]{CDEIKOMPRSUW}][A{1248PTSX}]]

EC 값은 각각 코드 및 실행 특성을 나타냅니다. Editbin 유틸리티 및 /SECTION 옵션에 대한 자세한 내용은 MSDN 웹 사이트(http://go.microsoft.com/fwlink/?LinkId=28168)를 참조하십시오.

Microsoft는 Windows XP SP2에서 DEP를 이용할 수 있도록 Microsoft .NET Framework v1.0 및 v1.1을 업데이트할 계획입니다. Microsoft .NET Framework 기반의 응용 프로그램은 계속해서 정상적으로 작동하지만 DEP는 설정해도 이용할 수는 없습니다.

Microsoft는 응용 프로그램 개발자가 Microsoft .NET Framework를 재배포하여 가능하면 DEP를 이용할 수 있는 Microsoft .NET Framework v1.0 서비스 팩 3이나 v1.1 서비스 팩 1로 업데이트할 것을 권장합니다.

Windows XP 서비스 팩 2에서 추가되거나 변경된 설정은 무엇입니까?


DEP의 시스템 전체 구성



시스템의 데이터 실행 방지 구성은 Boot.ini 스위치를 통해 제어됩니다. 또한 제어판에 있는 시스템을 변경하여 최종 사용자가 시스템에 관리자로 로그온한 경우 쉽게 DEP 설정을 구성하도록 할 수 있습니다.

Windows에서는 하드웨어 적용 DEP 및 소프트웨어 적용 DEP 모두에 대해 네 가지의 시스템 전체 구성을 지원합니다.





구성 설명

하드웨어 적용 DEP 및 소프트웨어 적용 DEP는 동일한 방법으로 구성됩니다. 시스템 전체 DEP 정책이 옵트인으로 설정되는 경우 동일한 Windows 핵심 바이너리와 응용 프로그램이 하드웨어 적용 DEP 및 소프트웨어 적용 DEP 모두에서 보호됩니다. 시스템이 하드웨어 적용 DEP를 사용할 수 없는 경우 Windows 핵심 바이너리와 응용 프로그램은 소프트웨어 적용 DEP에 의해서만 보호됩니다.

이와 유사하게 시스템 전체 DEP 정책이 옵트아웃으로 설정되는 경우 DEP 보호에서 제외된 응용 프로그램이 하드웨어 적용 DEP 및 소프트웨어 적용 DEP 모두에서 제외됩니다.

네 가지의 시스템 전체 DEP 구성이 boot.ini 스위치를 통해 제어됩니다. Boot.ini 설정은 다음과 같습니다.

/noexecute=policy_level

여기서 policy_levelAlwaysOn, AlwaysOff, OptIn 또는 OptOut으로 정의됩니다.

Windows XP SP2가 설치된 경우 또는 하드웨어 적용 DEP가 지원되는 컴퓨터 및 지원되지 않는 컴퓨터 간에 Windows 운영 체제 이미지가 이동되는 경우 Boot.ini 파일에 있는 기존 /noexecute 설정은 변경되지 않습니다.

Windows XP SP2를 설치하는 동안 다른 정책 수준을 무인 설치에 지정하지 않으면 OptIn 정책 수준이 기본적으로 사용됩니다. /noexecute=policy_level 설정이 DEP를 지원하는 Windows 버전의 부팅 항목에 없는 경우에는 /noexecute=OptIn 옵션이 포함된 경우와 동일하게 동작합니다.

관리자로 로그온한 최종 사용자는 시스템 속성 대화 상자의 데이터 실행 방지 탭을 사용하여 직접 OptInOptOut 정책 사이에 DEP를 구성할 수 있습니다. 다음 절차는 컴퓨터에서 DEP를 직접 구성하는 방법에 대해 설명합니다.





1. 시작, 제어판을 차례로 클릭한 다음 시스템을 두 번 클릭합니다.

IT 전문가는 다양한 방법으로 시스템 전체 DEP 구성을 제어할 수 있습니다. 스크립트 메커니즘을 사용하거나 Windows XP SP2에 포함되는 Bootcfg.exe 도구를 사용하여 Boot.ini 파일을 직접 수정할 수 있습니다.

Windows XP SP2를 무인 설치하기 위해 Unattend.txt 파일을 사용하여 특정 DEP를 미리 구성할 수 있습니다. Unattend.txt 파일의 [Data] 섹션에서 OSLoadOptionsVar 항목을 사용하여 시스템 전체 DEP 구성을 지정할 수 있습니다.

응용 프로그램별로 DEP 구성



응용 프로그램의 호환성을 위해 DEP를 OptOut 정책 수준으로 설정한 경우, 개별 32비트 응용 프로그램에 대해 DEP 해제를 선택적으로 설정할 수 있습니다.

최종 사용자를 위해 시스템 속성데이터 실행 방지 탭을 사용하여 응용 프로그램에 대해 DEP 해제를 선택적으로 설정할 수 있습니다.

IT 전문가를 위해 DisableNX라는 새로운 응용 프로그램 호환성 수정이 Windows XP 서비스 팩 2에 포함되어 있습니다. DisableNX 호환성 수정으로 인해 데이터 실행 방지가 적용되어 있는 프로그램에서 데이터 실행 방지를 사용할 수 없게 됩니다.

DisableNX 호환성 수정은 Application Compatibility Toolkit를 사용하여 응용 프로그램에 적용될 수 있습니다. Windows 응용 프로그램 호환성에 대한 자세한 내용은 Microsoft 웹 사이트(http://go.microsoft.com/fwlink/?LinkId=23302)에서 "Windows Application Compatibility"를 참조하십시오.