PE 포맷
PE 포맷(Portable Executable)은 마이크로소프트의 윈도 3.1부터 지원되는 실행 파일의 형식을 말한다. 유닉스 COFF(영어: Common Object file format)를 기반으로 나왔으며, PE 포맷을 사용하는 파일의 확장자는 cpl, exe, dll, ocx, vxd, sys, scr, drv가 있다.
다양한 운영 체제에서의 이식성을 보여준다는 뜻에서 이식이 가능한 실행 형식(영어: Portable Executable)이라는 이름이 붙었다. 1
목차 |
개요[편집]
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 포맷과의 호환성을 위해 다음의 메시지들 가운데 하나를 띄워 도스에서 실행되지 않는다고 사용자에게 먼저 알린다.
- This program requires Microsoft Windows.
- This program cannot be run in DOS mode.
- 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를 위한 방법이다.
바깥 고리[편집]
- 마이크로소프트 PE Coff 파일포맷 스페시피케이션
- 매트 피트렉, 최초의 PE 관련기사 (MSDN 매거진, 1994년 3월호)
- Part I. An In-Depth Look into the Win32 Portable Executable File Format by Matt Pietrek (MSDN Magazine, February 2002)
- Part II. An In-Depth Look into the Win32 Portable Executable File Format by Matt Pietrek (MSDN Magazine, March 2002)
- PE File Format Diagram
- The .NET File Format by Daniel Pistelli
- Creating the smallest possible PE executable 97bytes
- Detailed description of the PE format by Johannes Plachy
- 윈도우 실행 정보
관련 도구[편집]
- PEBrowse PE 파일 뷰어 유틸리티.
- CFF Explorer PE 편집기. 닷넷 프레임워크를 지원하는 최초의 PE 편집기.
- PE Explorer PE 파일 뷰어/편집기. (셰어웨어)
- yoda's LordPE Deluxe, 덤퍼가 포함된 PE 편집기.
- PEDUMP 콘솔 응용 프로그램 + 소스 코드(C++), 텍스트로 리디렉트한 다음 두 텍스트를 비교하기 좋음.
- GNU Binutils --target=i386-pe, --target=mips-pe
- Anywhere PE Viewer 자바 응용 프로그램.
- PE PE (.exe, .ocx, .dll 등)을 읽어서 섹션(section)을 볼 수 있고 리소스를 불러오거나 내보낼 수 있음.
- SK PEInfo for Windows CE 윈도 CE용 PE 뷰어.
- pefile 파이썬(프로그래밍) 모듈.
- anal_pe 명령 줄 기반의 도구. 리눅스와 윈도에서 동작.
관련 도서[편집]
- 《Windows 시스템 실행 파일의 구조와 원리》 ISBN 9788979143324