데이타 실행 방지 및 문제 해결
게시일: 2006/01/04 | 글쓴이: doa | 51590 번 | 프린트 | 메일


Title: Data execution prevention and troubleshuting

XP에는 데이타 실행 방지(Data execution prevention)라는 기술이 도입되었다. 이 기술은 악의적인 코드가 시스템에서 실행되는 것을 막기 위해 메모리를 추가로 확인하는 기술로 소프트웨어와 하드웨어적으로 지원된다. XP의 경우 서비스 팩 2와 Tablet PC Edition 2005에 적용되었다.

데이타 실행 방지(DEP)의 주요 장점은 데이터 페이지에서 코드가 실행되는 것을 막을 수 있다는데 있다. 데이타 실행 방지(DEP)는 데이타 페이지(기본 힙과 스택)에서 실행되는 코드를 검색하고 예외가 발생하는 경우 예외를 발생시킨다. 이러한 데이타 실행 방지(DEP)의 기능은 여러 가지 보안 침입을 차단할 수 있으며, 특히 바이러스나 기타 유형의 공격을 차단하는 큰 도움이된다.

그런데 문제는 이러한 데이타 실행 방지(DEP)의 기능때문에 다른 문제가 발생할 수 있다는 점이다. 페이징 중지를 통한 시스템 성능향상을 적용한 후 메모리 부족 메시지에 시달린다는 질문이나 메모리 사용 계획을 프로그램에서 시스템 캐쉬로 변경하면 부팅을 할 수 없다는 질문 모두 여기에 해당된다. 따라서 이번 팁에서는 데이타 실행 방지(DEP) 기능을 중지하는 방법을 설명하겠다.

참고: 이 팁은 기본적으로 boot.ini 파일을 편집해야 하므로 먼저 실제 주소 확장이란이라는 팁의 실제 주소 사용의 설정/삭제를 참조하기 바란다.


실제 시스템에 깔려있는 boot.ini 파일의 내용을 살펴보면 다음과 같이 구성되어 있는 것을 알 수 있다.

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=
	"Microsoft Windows XP Professional" /noexecute=optin /fastdetect


여기서 주의해야하는 부분은 /noexecute이다. /noexecute는 다음처럼 4개의 옵션을 지정할 수 있다.

OptIn 기본값이다. 하드웨어 데이타 실행 방지(DEP)를 구현할 수 있는 프로세서가 장착된 시스템에서는 기본적으로 데이타 실행 방지(DEP)를 사용할 수 있게 설정한다. 이 옵션을 사용하면 기본적으로 Windows 시스템 파일만만 데이타 실행 방지(DEP)에서 보호한다주1.
OptOut 데이타 실행 방지(DEP)는 모든 프로세스에 대해 사용하게된다. 제어판/시스템/성능에서 데이타 실행 방지(DEP)가 적용되지 않는 특정 프로그램 목록을 지정할 수 있다주2.
AlwaysOn 데이타 실행 방지(DEP)로 전체 시스템을 보호한다. 모든 프로세스는 항상 데이타 실행 방지(DEP)에의해 보호된다. 아울러 데이타 실행 방지(DEP) 보호에서 특정 프로그램을 제외하기 위한 예외 목록을 사용할 수 없다.
AlwaysOff 하드웨어 데이타 실행 방지(DEP)의 지원 여부에 관계없이 데이타 실행 방지(DEP)로 시스템을 보호하지 않는다. 아울러 이 경우 Boot.ini 파일에 /PAE 옵션을 추가하지 않으면 프로세서가 PAE 모드로 실행되지 않는다.


따라서 비교적 최근에 나온 CPU를 사용하면서 데이타 실행 방지(DEP) 기능을 중지하려면 /noexecute=optin 부분을 다음 두가지 중 하나처럼 바꿔야 한다.

/noexecute=AlwaysOff
/noexecute=AlwaysOff /pae


여담1: 필자가 2004년에 올린 페이징 중지를 통한 시스템 성능향상은 사실 필자가 NT를 처음 사용하던 96년부터 사용하던 팁이다. 당시 구입한 컴퓨터의 CPU는 MMX 200이고 RAM은 32M였다. 처음에는 95를 설치하고 사용하던 시스템이지만 NT 4.0이 출시된 이후 NT를 설치해서 사용했었다.

NT의 경우 기본 커널이 48M 정도 차지하기때문에 주변 사람들은 32M의 메모리로 운영하는 것은 무리라고 했지만 이 시스템을 작업 PC로 웹 서버로 사용했었다. 이 것이 가능했던 것은 각종 서비스와 드라이버를 삭제해서 기본 커널을 24M로 줄였기 때문이었다.

그러나 프로그램 몇개만 뛰워도 메모리가 모자라 페이지 파일로 스와핑하기 때문에 느리긴 느렸다. 결국 시스템을 128M로 업그레드했다. 시스템을 업그레이드하자 발생하는 문제는 이제는 RAM이 남아 돈다는 것이었다. 결국 남는 메모리를 활용하기위해 작성한 팁이 Windows NT 4.0의 성능 개선이라는 팁이었다.

내용은 페이징 중지를 통한 시스템 성능향상과 달라보이지만 둘다 커널을 페이징하지 않고 사용하는 팁으로 핵심은 DisablePagingExecutive를 1로 설정하는 것이었다.

이 팁을 적용하고 시스템의 성능은 눈에 띄게 향상됐다. 지금 기억으로는 펜티엄 4(XP)에서 IE를 뛰우는 속도보다 MMX 200(NT)에서 Netscape을 띄우는 속도가 훨씬 빨랐던 것 같다. 오죽했으면 NT가 아니라 사람들이 95로 알고 있었고, 95보다 훨씬 빠른 동작 속도에 다들 놀라움을 금치 못했었다.


여담2: 요즘은 이팁이나 다른 속도 향상 팁을 적용해도 속도가 크게 향상되어 보이지 않는다. 그러나 사실 조금만 더 생각해보면 당연한 현상이다.

이해하기쉽게 오버클럭을 생각해보자. MMX 200을 300으로 100MHz 오버하면 시스템의 성능은 50%가 향상된다. 그런데 3000을 3100으로 오버하면 시스템의 성능은 3.3% 향상된다. 여기에 시스템 버스의 속도를 고려하면 3000에서 3100으로의 오버는 안하는 것만 못한 경우가 많다. 그러나 물론 불가능주3하겠지만 3000을 4500으로 오버한 경우를 생각해보자. 시스템의 성능이 50% 향상됐기때문에 이 경우에는 누구나 성능 향상을 경험할 수 있다.

즉, 요즘 시스템의 경우 성능이 워낙 좋기때문에 어지간한 팁으로는 눈에 보이는 성능 향상을 기대하기 힘들다. 그러나 벤치마크 프로그램을 이용하면 이러한 성능 향상이 눈에 보이는 경우가 많다. 다만 체감하지 못하는 것일 뿐이다.


주1: OptIn이 기본이므로 비교적 구입한지 얼마되지 않은 시스템을 사용하면 데이타 실행 방지(DEP)가 자동적으로 활성화된다는 얘기가 된다. 바로 이점이 구입한지 오래된 컴퓨터의 경우 필자의 팁이 잘 적용되지만 오히려 최근에 구입한 컴퓨터가 동작하지 않는 원인이 데이타 실행 방지에 있다는 것을 알 수 있다. 데이타 실행 방지(DEP)는 데이타 페이지에서 코드를 실행할 수 없도록 하고 있다. 따라서 추측 이지만 커널을 모두 메모리로 띄우는 경우 커널의 일부가 데이타 페이지에 적재될 수 있는 것 같다.

주2: OptInOptOut의 설정은 제어판/시스템/고급 탭/성능의 설정 버튼/데이터 실행 방지 탭에서 설정할 수 있다. 데이터 실행 방지를 필수적인 Windows 프로그램 및 서비스에만 선택(OptIn)적으로 사용하는 항목과 데이터 실항 방지를 사용자가 직접 선택한 항목을 제외(OptOut)한 모든 프로그램 및 서비스에 사용하는 항목이 그것이다.



주3: 여기서 불가능은 안정적으로 동작하도록 오버하는 것이 불가능함을 의미한다.

댓글: 이 팁은 syt666님의 질문, 리소스 부족 이 자꾸 나오면서 컴이 켜지지를 않습니다에 대한 답으로 작성되었습니다.


읽기 전용 속성이 해제되지 않는 이유 Title: Why I cant deselect read-only attribut... (15095) 2006-01-04
제어판/클래식 보기가 사라진 경우 XP에는 일반 작업이라는 기능이 있다. 일반 작업은 ... (5899)2006-01-04

QAOS.com에 게시된지 1년 이상된 자료와 관리자가 공개한 자료는 누구나 제한없이 읽을 수 있습니다.
그러나 QAOS.com의 자료를 퍼가는 것은 금지하고 있습니다.

이 정보가 유용하다고 생각되시면 QAOS.com과 많은 다른 사람들을 위해 퍼가기 보다는 링크로 알려주시기 바랍니다.

세상사는 이야기



RSS 구독 (익명 | 회원 | 강좌 | 포럼)
(C) 1996 ~ 2017 QAOS.com All rights reserved.