EXE
EXE (od ang. executable, wykonywalny) – rozszerzenie nazwy pliku wykonywalnego w systemach Microsoft Windows, MS-DOS oraz OS/2; pliki o tym rozszerzeniu w zamierzeniu zawierają przede wszystkim skompilowany kod maszynowy programu, choć może zawierać także inne zasoby (np. dotyczące struktury okien, ikony, obrazy, dźwięki, itp.).
Rozszerzenia pliku |
.exe |
---|---|
Typ MIME |
application/vnd.microsoft.portable-executable |
Producent | |
Typ |
wykonywalny (binarny język maszynowy) |
Otwarty format? |
nie |
Sygnatura pliku to sekwencja bajtów, zwykle na początku pliku, pomagająca zidentyfikować format pliku (jest to kolejny element potwierdzający po rozszerzeniu pliku); w przypadku plików wykonywalnych EXE (oraz innych, mających identyczną strukturę, m.in. DLL, OCX, ACM, AX, IME, MUI, RLL, TSP, CPL, DRV, VXD, SCR i niektóre SYS) najczęściej dwoma pierwszymi znakami są litery „MZ” pochodzące od inicjałów autora, Marka Zbikowskiego[1]. Plik EXE może zawierać kod wykonywalny w różnych formatach (zależny przykładowo od systemu operacyjnego, zob. dalej), pliki binarne typu Portable Executable w dalszej części zawierają sygnaturę „PE”.
Formaty
edytujIstnieje kilka głównych formatów plików wykonywalnych:
- 16-bitowy plik wykonywalny DOS formatu MZ – oryginalny format pliku wykonywalnego systemu DOS, identyfikowany za pomocą dwóch znaków „MZ” w kodzie ASCII na początku pliku; ma relatywnie małe możliwości. Dopuszczalne, chociaż zdecydowanie rzadziej używane, są także znaki „ZM”.
- 16-bitowy (New Executable, „nowy wykonywalny”, tzn. nowy typ pliku wykonywalnego) – używany w wielowątkowym systemie DOS 4.0 i w 16-bitowych wersjach Microsoft Windows, identyfikowany za pomocą liter „NE” na początku pliku; nie zdobył wielkiej popularności, nie mógł być uruchamiany w pozostałych wersjach systemu DOS, lecz możliwe to było w przypadku 32-bitowych wersji systemów Windows i OS/2.
- 32-bitowy (Linear Executable, „liniowy [plik] wykonywalny”) – wprowadzony w OS/2 2.0, identyfikowany znakami „LX” na początku pliku; może być uruchomiany w systemie OS/2 w wersji począwszy od 2.0.
- Mieszany 16/32-bitowy (Linear Executable) wprowadzony w OS/2 2.0, identyfikowany za pomocą początkowych znaków „LE”; nie używany w OS/2, znalazł zastosowanie w sterownikach VxD systemów Windows 3.x i Windows 9x.
- 32-bitowy (Portable Executable, „przenośny [plik] wykonywalny”) – wprowadzony w Windows NT, identyfikowany za pomocą znaków „PE” w kodzie ASCII; wykonywalny we wszystkich systemach Windows NT oraz Windows 95 i nowszych, a nawet systemie DOS rozszerzonym za pomocą ekstendera HX, wykorzystywany ponadto w BeOS R3 (format tam użyty narusza jednak specyfikację tego formatu).
- 64-bitowy (Portable Executable) – wersja dla 64-bitowych systemów Windows, może być uruchamiany tylko w 64-bitowych systemach Windows.
- Pozostałe
Poza powyższymi istnieją także niestandardowe formaty, takie jak W3 (biblioteka plików LE, używana wyłącznie w WIN386.EXE), W4 (skompresowany zbiór plików LE, używany tylko w Vmm32.vxd), DL, MP, P2, P3 (trzy ostatnie używane przez extender Phar Lap).
W przypadku plików wykonywalnych w formacie 16- i 32-bitowym dla systemu Windows standardem jest rozpoczęcie ich krótkim programem poprzedzonym sygnaturą „MZ” (tzw. stub). Jego celem jest zwykle poinformowanie o przeznaczeniu tego programu dla systemu Windows (zazwyczaj w postaci tekstu „This program cannot be run in DOS mode.” (pol. „Ten program nie może być uruchomiony w trybie DOS.”) lub „This program requires Microsoft Windows.” (pol. „Ten program wymaga Microsoft Windows.”)), choć możliwe jest umieszczenie w tym miejscu innego kodu (korzystając z odpowiedniej opcji konsolidatora), np. wersji programu dla systemu DOS. Zasadnicza część danego programu, tzn. fragment przeznaczony dla systemu Windows, ma sygnaturę „NE” lub „PE” – kod zaczynający się od sygnatury „MZ” jest wówczas ignorowany (poza odnośnikiem do struktury PE i samą sygnaturą). Jednakże kod „PE” może być również wykonany w systemie DOS przy użyciu wspomnianego wyżej extendera DOS HX.
Przypisy
edytuj- ↑ Matt Pietrek. An In-Depth Look into the Win32 Portable Executable File Format. „MSDN Magazine”, s. sekcja „The MS-DOS Header”, luty 2002. (ang.). [dostęp 2016-11-30]