PE 포맷

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

PE 포맷(Portable Executable)은 마이크로소프트윈도 3.1부터 지원되는 실행 파일형식을 말한다. 유닉스 COFF(영어: Common Object file format)를 기반으로 나왔으며, PE 포맷을 사용하는 파일의 확장자는 cpl, exe, dll, ocx, vxd, sys, scr, drv가 있다.

다양한 운영 체제에서의 이식성을 보여준다는 뜻에서 이식이 가능한 실행 형식(영어: Portable Executable)이라는 이름이 붙었다.

개요[편집]

PE 형식은 근본적으로 윈도 OS 로더가 감춰진 실행 코드를 다루는 데 있어서 필수적인 정보를 은닉해 주는 자료 구조이다. 이것은 링크와 API 내보내기/가져오기 테이블, 리소스 관리 데이터, 스레드 로컬 장치 데이터들을 포함하는 동적 라이브러리를 포함한다. 확장 펌웨어 인터페이스(EFI)는 EFI 환경에서의 표준 실행 PE 포맷이다.

윈도 NT 시스템에서 PE는 IA-32/IA-64/x86-64(AMD64/Intel64) 명령어 구조를 동시에 지원한다. 윈도 2000 이전에, 윈도 NT(PE)는 MIPS/DEC Alpha/PowerPC 명령어 구조를 지원하였었다. PE가 윈도 CE에서 사용되었기 때문에, 계속해서 MIPS/ARM/SuperH 명렁어 구조의 다양한 변화를 계속해서 지원했다.

완전한 도스에서 PE 포맷을 가진 파일을 실행하면 EXE 포맷과의 호환성을 위해 다음의 메시지들 가운데 하나를 띄워 도스에서 실행되지 않는다고 사용자에게 먼저 알린다.

  1. This program requires Microsoft Windows.
  2. This program cannot be run in DOS mode.
  3. This program must be run under Win32

프로그램을 종료하는 마이크로소프트 도스 프로그램이 첫머리에 붙는다. (완전한 도스에서는 이 메시지를 띄운 뒤 바로 도스 프롬프트로 빠져나오게 된다.) 그 뒤로 PE 고유의 식별자, COFF와 비슷한 데이터 구조가 있어서, MS-DOS 헤더에는 그 오프셋이 기록되어 있다. 또 다양한 CPU 아키텍처에 대응하기 위해서 내부에 판별을 위한 플래그를 갖는다. 실행할 때 DLL을 이용하여 함수들을 동적으로 링크하기 때문에 구성요소 수준의 버그 수정, 호환성 유지가 이루어질 수 있도록 되어 있다. 또, 리소스 영역에 아이콘 등을 보관할 수 있기 때문에, 그래픽 사용자 인터페이스 환경에서 아이콘이 표시되어 소프트웨어가 무엇인지 판별하기 쉽다.

역사[편집]

마이크로소프트는 윈도 NT 3.1 의 등장과 함께 PE포맷을 사용하기 시작했다. 윈도 95/98/Me를 포함한 모든 윈도의 후속작들은 PE를 지원했다. PE는 DOS와 NT 기반 시스템 사이의 차이를 연결해주는 제한된 지원을 가져왔다. 예를들어, PE/COFF 헤더는 아직까지 MS-DOS 실행 프로그램을 포함하고 있는데, 이것은 "이 프로그램은 DOS 모드에서 실행될 수 없습니다."라는 메시지를 통해서 알 수 있다. PE는 또한 계속해서 윈도 플랫폼을 바꿔왔다. 어떤 변화는 .NET PE 포맷을 포함하는데, PE32+라고 불리는 64비트 버전이며, 윈도 CE를 위한 방법이다.

관련 도서[편집]

바깥 고리[편집]

관련 도구[편집]