EXE
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
EXE는 운영 체제에 따라 형식이 다른 실행 파일 형식이다. 파일 시작 부분에는 "MZ" 매직 넘버가 존재하며, 윈도우, OS/2 등 다양한 운영 체제에서 사용된다. EXE 파일 형식에는 16비트 DOS MZ 실행 파일, 16-bit New 실행 파일, 32비트 선형 실행 파일, Mixed 16/32-bit 선형 실행 파일, PE (Portable Executable) 등이 있으며, 각 형식은 운영 체제 및 비트 수에 따라 구분된다. COM 파일 형식과 비교했을 때, EXE는 더 많은 기능을 제공하고 확장성이 높다.
더 읽어볼만한 페이지
- 실행 파일 포맷 - COM 파일
COM 파일은 CP/M 및 MS-DOS 운영체제에서 사용된 실행 파일 형식으로, 메타데이터 없이 코드와 데이터로 구성되어 64KB 크기 제한을 가지며, 단순한 구조로 극소의 실행 파일을 만들 수 있지만 보안 취약점도 존재한다. - 실행 파일 포맷 - PE 포맷
PE 포맷은 윈도우 운영체제에서 실행 가능한 파일 포맷으로, COFF를 확장한 형태를 가지며 파일 헤더, 섹션, 임포트/익스포트 테이블 등으로 구성되어 32/64비트 윈도우 환경에서 널리 사용되고 윈도우 보안 기능과 연관되어 활용된다. - 도스 기술 - COM 파일
COM 파일은 CP/M 및 MS-DOS 운영체제에서 사용된 실행 파일 형식으로, 메타데이터 없이 코드와 데이터로 구성되어 64KB 크기 제한을 가지며, 단순한 구조로 극소의 실행 파일을 만들 수 있지만 보안 취약점도 존재한다. - 도스 기술 - QEMM
QEMM은 쿼터덱 사에서 출시한 메모리 관리 소프트웨어로, 인텔 80286 이상의 CPU를 위한 다양한 도구와 드라이버를 제공하며, DOS 환경에서 메모리 관리에 중요한 역할을 했다. - 윈도우 관리 - 블루스크린
블루스크린은 윈도우 운영체제에서 발생하는 치명적인 오류로, 컴퓨터 작동을 멈추고 파란색 화면에 오류 메시지를 표시하며, 하드웨어 또는 소프트웨어 문제로 인해 발생하고, 시스템 복원, 안전 모드 부팅 등의 방법으로 대처한다. - 윈도우 관리 - 파워셸
파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다.
EXE - [IT 관련 정보]에 관한 문서 | |
---|---|
파일 정보 | |
MIME 형식 | application/vnd.microsoft.portable-executable |
매직 넘버 | 0x4d 0x5a |
소유자 | 마이크로소프트 |
파일 종류 | 실행 파일 (이진 기계 코드) |
컨테이너 형식 | MZ NE LX LE PE PE32+ W3 W4 DL MP P2 P3 |
2. 파일 형식
EXE 파일 형식은 운영 체제 버전에 따라 다양하다. 운영 체제는 해당 운영 체제에 맞게 형식이 지정되지 않은 EXE 파일을 사용할 수 없다. 일부 형식은 여러 운영 체제를 지원하기도 한다.
파일 시작 부분에는 0x5A4D(매직 넘버)가 들어 있는데, 이는 MS-DOS 2.0 개발 책임자인 마크 즈비코프스키의 이니셜 'MZ'를 ASCII 코드로 나타낸 것이다.[5]
확장 헤더를 통해 윈도우나 OS/2의 실행 파일 정보를 지정하며, 이러한 OS용으로 만들어진 프로그램이 원래 아키텍처의 OS에서 실행된 경우에는 해당 확장 헤더를 해석하고, MS-DOS에서 실행된 경우에는 실행할 수 없음을 표시하고 종료시키는 등의 프로그램을 배치할 수 있다. 이러한 형식에는 PE, NE, LE 등이 있다.
2. 1. 도스 (DOS)
.exe 확장자와 함께 쓰이는 여러 종류의 다양한 파일 형식이 있다. 파일 시작 부분에는 0x5A4D(ASCII 코드로 'MZ' 문자열)[5]의 매직 넘버가 들어 있다. 이는 MS-DOS 2.0의 개발 책임자 중 한 명인 마크 즈비코프스키의 이니셜에서 유래되었다.확장 헤더를 통해 윈도우나 OS/2의 실행 파일 정보를 지정하며, 이러한 OS용으로 만들어진 프로그램이 원래 아키텍처의 OS에서 실행된 경우에는 해당 확장 헤더를 해석하고, MS-DOS에서 실행할 수 없음을 표시하고 종료시키는 등의 프로그램을 배치할 수 있다. 이러한 형식에는 PE, NE, LE 등이 있다.
2. 1. 1. 16비트 DOS MZ 실행 파일 (MZ)
초기 도스 실행 파일 형식으로, 파일 시작 부분에 "MZ"라는 ASCII 문자로 식별된다.[5] 이는 MS-DOS 2.0의 개발 책임자 중 한 명인 마크 즈비코프스키의 이니셜에서 유래되었다.2. 1. 2. 16비트 New Executable (NE)
NE는 멀티태스킹 MS-DOS 4.0에서 도입되어, 16비트 OS/2 및 윈도우에서 사용되었으며, 파일 시작 부분의 ASCII 코드 "NE" 문자로 구별된다.[5]2. 2. OS/2
OS/2 2.0에서 도입된 실행 파일 형식에는 32비트 선형 실행 파일(LX)과 혼합 16/32비트 선형 실행 파일(LE) 두 가지가 있다. LX는 아스키 코드 "LX"로, LE는 "LE"로 구별된다. 이 파일들의 시작 부분에는 0x5A4D(매직 넘버)가 들어 있는데, 이는 MS-DOS 2.0 개발 책임자인 마크 즈비코프스키(Mark Zbikowski)의 이니셜에서 유래되었다.[5]2. 2. 1. 32비트 선형 실행 파일 (LX)
OS/2 2.0에서 처음 도입되었으며, 아스키(ASCII)에서 "LX"로 식별할 수 있다. OS/2 2.0 이상에서만 실행할 수 있다.[14][2][6] 또한 몇몇 DOS 확장자에서 사용된다.2. 2. 2. Mixed 16/32-bit 선형 실행 파일 (LE)
OS/2 2.0에서 도입되었으며, ASCII 문자 "LE"로 식별된다.[14] 이 형식은 윈도우 3.x, OS/2, 윈도우 9x에서 VxD 드라이버로 사용되었다.2. 3. 윈도우 (Windows)
윈도우 운영체제는 EXE 파일 형식을 사용하며, 한국에서 가장 널리 사용되는 운영체제이므로 윈도우 EXE 파일 형식은 특히 중요하다.EXE 파일 형식은 운영 체제 버전에 따라 다르다. 운영 체제는 해당 운영 체제에 맞게 형식이 지정되지 않은 EXE 파일을 사용할 수 없다. 일부 형식은 여러 운영 체제를 지원하기도 한다.
파일의 시작 부분에는 0x5A4D(매직 넘버)가 들어 있는데, 이는 MS-DOS 2.0의 개발 책임자 중 한 명인 마크 즈비코프스키(Mark Zbikowski)의 이니셜 'MZ'를 ASCII 코드로 나타낸 것이다.[5]
16비트 및 32비트 윈도우 실행 파일이 윈도우에서 실행될 때, NE 또는 PE에서 실행이 시작되며, MS-DOS 스텁이라고 불리는 MZ 코드는 무시된다.[7][8]
2. 3. 1. 16-bit New Executable (NE)
16비트 또는 32비트 윈도우 실행 파일은 NE 또는 PE에서 실행되며, DOS 스텁이라고 불리는 MZ 코드는 무시된다.[15][16] 도스에서 실행되는 경우, 스텁 코드는 "This program cannot be run in DOS mode" 메시지를 표시하고 종료된다. 레지스트리 편집기[17]나 오래된 WinZIP 자체 압축 해제 형식 파일 등 일부 듀얼 모드 프로그램은 더 많은 DOS 프로그램이 포함되어 있었다.[18]2. 3. 2. 32-bit Portable Executable (PE)
윈도우 NT에서 도입되었으며, 아스키 코드 "PE"로 식별된다. (파일 시작 부분은 "MZ"이다)[19] MS-DOS 관련 부분(DOS 스텁이라고도 함)과 윈도우 관련 부분으로 구성된 팻 바이너리이다. DOS 관련 부분은 유효한 16비트 DOS 프로그램이다. Microsoft C++ 링커는 기본적으로 "This program cannot be run in DOS mode."라는 메시지를 출력하는 최소한의 DOS 스텁을 사용한다. 윈도우는 DOS 스텁을 무시하고 "PE\0\0" ASCII 시퀀스(문자 "PE"와 두 개의 널 바이트)로 시작하는 윈도우 관련 부분을 실행한다. 일부 링커에서는 사용자 정의 DOS 스텁을 지정할 수 있다. 실제로, 윈도우 95의 regedit 및 이전 버전의 WinZIP 자체 압축 해제기 등 몇몇 듀얼 프로그램도 존재했다.2. 3. 3. 64-bit Portable Executable (PE32+)
64비트 버전의 윈도우에서 도입되었으며, 더 넓은 필드를 가진 PE 파일이다.[20] 대부분의 경우, 코드는 32비트 또는 64비트 PE 파일로 간단하게 작동하도록 작성할 수 있다.[12] 이 파일에는 DOS 스텁도 포함되어 있다.2. 4. 기타
EXE 형식에는 ''W3''(WIN386.EXE에서만 사용되는 LE 파일 모음), ''W4''(VMM32.VXD에서만 사용되는 LE 파일의 압축된 모음), ''DL'', ''MP'', ''P2'', ''P3'' (파 랩 익스텐더에서 사용) 등 다양한 형식이 있다.[3]3. COM 파일과의 비교
MS-DOS에서 실행 가능한 바이너리 형식에는 COM 파일 형식도 존재한다. COM 형식은 코드, 데이터, 스택의 모든 세그먼트가 동일한 모델로, 시작 주소도 0x100으로 고정된 메모리 이미지 그 자체이며, 심볼 재배치도 없다. COM 파일 형식은 파일 헤더가 없어 확장성이 없었다. 이에 비해 EXE 형식은 연속된 하나의 메모리 이미지로, 코드, 데이터, 스택을 별도의 세그먼트를 사용하여 접근해야 하는 경우에 대응하며, 시작 주소 및 해당 세그먼트 레지스터의 값을 파일 시작 부분에서 상대적으로 지정할 수 있으며, 세그먼트 지정의 재배치 항목이 존재한다.[1]
4. 헤더 형식의 예
c
typedef struct _IMAGE_DOS_HEADER {
WORD e_magic; /* 00: MZ 헤더 시그니처 */
WORD e_cblp; /* 02: 파일의 마지막 페이지의 바이트 수 */
WORD e_cp; /* 04: 파일의 페이지 수 */
WORD e_crlc; /* 06: 재배치 항목 수 */
WORD e_cparhdr; /* 08: 헤더의 크기 (패러그래프 단위) */
WORD e_minalloc; /* 0a: 필요한 최소 추가 패러그래프 수 */
WORD e_maxalloc; /* 0c: 허용 가능한 최대 추가 패러그래프 수 */
WORD e_ss; /* 0e: 초기 (상대적) SS 값 */
WORD e_sp; /* 10: 초기 SP 값 */
WORD e_csum; /* 12: 체크섬 */
WORD e_ip; /* 14: 초기 IP 값 */
WORD e_cs; /* 16: 초기 (상대적) CS 값 */
WORD e_lfarlc; /* 18: 재배치 테이블의 파일 주소 */
WORD e_ovno; /* 1a: 오버레이 번호 */
WORD e_res[4]; /* 1c: 예약된 단어 */
WORD e_oemid; /* 24: OEM 식별자 (e_oeminfo용) */
WORD e_oeminfo; /* 26: OEM 정보; e_oemid에 따라 다름 */
WORD e_res2[10]; /* 28: 예약된 단어 */
DWORD e_lfanew; /* 3c: 확장 헤더의 오프셋 */
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
```
이 정의는 Wine에서 사용되는 헤더 파일 (winnt.h)에서 인용되었다. WORD는 16비트 정수이며, DWORD는 32비트 정수이다.
참조
[1]
웹사이트
.EXE File Extension
https://fileinfo.com[...]
Sharpened Productions
2019-08-16
[2]
웹사이트
OS/2 Operating System
http://www.operating[...]
2014-02-13
[3]
웹사이트
Int 21/AH=4Bh
http://www.ctyme.com[...]
2018-10-30
[4]
웹사이트
.EXE File Extension
https://fileinfo.com[...]
Sharpened Productions
2019-08-16
[5]
문서
리틀엔디언
[6]
웹사이트
OS/2 Operating System
http://www.operating[...]
2014-02-13
[7]
웹사이트
/STUB (MS-DOS Stub File Name) Linux/Mac cannot run an exe file.
https://msdn.microso[...]
Microsoft
2014-01-10
[8]
웹사이트
DOS Stub Program
http://thestarman.pc[...]
Self-published
2014-01-10
[9]
웹사이트
Using Registry Editor in Real Mode
http://support.micro[...]
Microsoft
2014-01-10
[10]
웹사이트
dostub.exe
http://purl.net/xyzz[...]
2014-01-24
[11]
웹사이트
PE Format
https://msdn.microso[...]
Microsoft
2019-08-16
[12]
저널
An In-Depth Look into the Win32 Portable Executable File Format
https://msdn.microso[...]
Microsoft
2002-02-01
[13]
웹사이트
Int 21/AH=4Bh
http://www.ctyme.com[...]
2018-10-30
[14]
웹인용
OS/2 Operating System
http://www.operating[...]
2016-02-12
[15]
웹인용
/STUB (MS-DOS Stub File Name)
http://msdn.microsof[...]
마이크로소프트
2016-02-12
[16]
웹인용
DOS Stub Program
http://thestarman.pc[...]
Self-published
2016-02-12
[17]
웹인용
Using Registry Editor in Real Mode
http://support.micro[...]
마이크로소프트
2016-02-12
[18]
웹인용
dostub.exe
http://purl.net/xyzz[...]
2016-02-12
[19]
웹인용
Microsoft PE and COFF Specification
http://msdn.microsof[...]
[20]
저널
An In-Depth Look into the Win32 Portable Executable File Format
http://msdn.microsof[...]
마이크로소프트
2002-02-01
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com