Co to jest format pliku EXE?
Plik z rozszerzeniem .exe zawiera skompilowany program i jego zasoby dla systemów Microsoft Windows, DOS lub (historycznie) OS/2. Pliki .exe mogą przechowywać aplikacje, gry, instalatory lub złośliwe oprogramowanie. Można je uruchamiać z wiersza poleceń lub za pomocą interfejsu graficznego poprzez dwukrotne kliknięcie. Pliki .exe są zależne od systemu - przechowują dane w formacie binarnym, a ich wewnętrzna sygnatura określa podtyp wykonywalny.
Każdy plik .exe zaczyna się od dwubajtowej magicznej sygnatury MZ (hex 4D 5A) pod offsetem 0, nazwanej na cześć jej współtwórcy, Marka Zbikowskiego. Nowoczesne pliki wykonywalne Windows dodatkowo posiadają sygnaturę PE\0\0 pod offsetem zapisanym na pozycji 0x3C, co potwierdza, że plik jest typu Portable Executable. Istnieje pięć głównych historycznych podformatów .exe:
MZ- 16-bitowy format natywny dla DOS.NE- 16-bitowy format „New Executable” używany przez 16-bitowe systemy Windows (1.x-3.x) i OS/2 1.x; nie może działać na czystym DOS, ale jest obsługiwany przez warstwy zgodności 32-bitowego Windows i OS/2.LX- 32-bitowy format dla OS/2 2.0 i nowszych.LE- 16/32-bitowy format używany głównie dla sterowników VxD w starszych systemach Windows (wydanych przed rokiem 2000).PE- „Portable Executable”, obejmujący wersje 32-bitowe (PE32) i 64-bitowe (PE32+); wprowadzony wraz z Windows NT i będący obecnie dominującym formatem. Warianty ARM i ARM64 rozszerzają PE dla urządzeń Windows on ARM.
Pliki .exe mogą przechowywać zasoby, takie jak ikony, okna dialogowe, informacje o wersji, dźwięk i manifesty aplikacji. Należy pamiętać, że nie wszystkie typy plików .exe można uruchomić w danym systemie, ponieważ pliki te są zależne od platformy. Aby uruchomić plik .exe w innym systemie operacyjnym, wymagane jest odpowiednie narzędzie do emulacji, takie jak Wine lub CrossOver. Archiwa samorozpakowujące również używają rozszerzenia .exe, zaczynając się od nagłówka MZ/PE i przenosząc wewnętrznie ładunek archiwum ZIP, 7z lub CAB.
Nowoczesne pliki .exe systemu Windows często posiadają podpis kodu Authenticode w celu weryfikacji tożsamości wydawcy, a system operacyjny wymusza funkcje bezpieczeństwa, w tym ASLR, DEP/NX i Control Flow Guard. Importy z plików .dll są rozwiązywane w czasie ładowania przez program ładujący Windows PE. Pliki .exe z nieznanych lub niezaufanych źródeł muszą być traktowane z ostrożnością, ponieważ niosą ze sobą ryzyko infekcji złośliwym oprogramowaniem w przypadku wykonania.
Bezpieczeństwo
RYZYKO: HIGHEXE to wektor złośliwego oprogramowania nr 1 w systemie Windows: może uruchomić dowolny kod z Twoimi uprawnieniami, dlatego wirusy, trojany, ransomware i „cracki/keygeny” to zazwyczaj pliki EXE. Lista kontrolna bezpieczeństwa: uruchamiaj tylko pliki EXE od oficjalnego dostawcy lub z zaufanego sklepu; przed uruchomieniem sprawdź podpis cyfrowy (prawy przycisk myszy → Właściwości → Podpisy cyfrowe) - legalne oprogramowanie jest podpisane kodem, a nazwa wydawcy się zgadza; bądź bardzo podejrzliwy wobec plików EXE otrzymanych pocztą e-mail, przez czat lub dołączonych do „darmowych” plików do pobrania. Ostrzeżenia Windows SmartScreen i programów antywirusowych dotyczące nierozpoznanego pliku EXE należy traktować poważnie. Aby sprawdzić pobrany plik bez jego wykonywania, otwórz go jako archiwum w 7-Zip lub przeskanuj w serwisie VirusTotal. Uważaj na podwójne rozszerzenia, takie jak „faktura.pdf.exe”, oraz pliki EXE podszywające się pod ikony dokumentów.
Szczegóły formatu
w pigułceProgramy otwierające pliki EXE
Szczegóły techniczne
specyfikacja| Magiczne bajty | MZ (4D 5A) pod offsetem 0; sygnatura PE PE\0\0 (50 45 00 00) pojawia się pod offsetem zapisanym w nagłówku MZ pod adresem 0x3C |
| Typ MIME | application/vnd.microsoft.portable-executable |
| Obsługa architektur | x86 (32-bit), x86-64/AMD64 (64-bit), ARM, ARM64; docelowa architektura jest zakodowana w polu Machine nagłówka COFF File Header |
| Warianty podformatów | MZ (MS-DOS 16-bit), NE (16-bit Windows/OS/2 1.x), LX (OS/2 2.x 32-bit), LE (sterowniki VxD), PE32 (32-bit Windows), PE32+ (64-bit Windows) |
| Układ sekcji PE | Sekcje obejmują .text (kod wykonywalny), .data (dane zainicjowane), .rdata (dane tylko do odczytu), .rsrc (zasoby) oraz .reloc (relokacje bazowe) |
| Punkt wejścia | Względny adres wirtualny (RVA) pierwszej instrukcji, przechowywany w AddressOfEntryPoint w nagłówku PE Optional Header |
| Tablica importu | Lista plików DLL oraz nazwanych lub porządkowych eksportów funkcji wymaganych przez plik binarny; rozwiązywana przez program ładujący Windows przy starcie |
| Tablica eksportu | Opcjonalnie udostępnia funkcje lub symbole danych do użytku przez inne pliki wykonywalne lub DLL; występuje głównie w plikach DLL, rzadziej w EXE |
| Sekcja zasobów (.rsrc) | Osadza ikony, mapy bitowe, okna dialogowe, tabele ciągów znaków, informacje o wersji i manifesty aplikacji w drzewie oznaczonym typem/nazwą/językiem |
| Podpisywanie kodu | Podpis cyfrowy Authenticode (PKCS#7/CMS) przechowywany w Security Directory; weryfikowany przez Windows SmartScreen, UAC oraz jądro podczas ładowania sterowników |
| Zabezpieczenia | Flagi DllCharacteristics w nagłówku Optional Header włączają ASLR, DEP/NX, Control Flow Guard (CFG), SafeSEH oraz High-Entropy VA dla binariów 64-bitowych |
| Suma kontrolna PE | Czterobajtowe pole CheckSum w nagłówku Optional Header; wymuszane przez program ładujący Windows dla sterowników trybu jądra i plików systemowych |
| Typy podsystemów | Windows GUI, konsola Windows (CUI), natywny (tryb jądra), aplikacja EFI, sterownik usług rozruchowych EFI, sterownik czasu wykonywania EFI |
| Użycie jako archiwum samorozpakowujące | Pakiety SFX osadzają ładunek ZIP, 7z lub CAB po nagłówku PE; plik uruchamia się jako normalny program wykonywalny i automatycznie się rozpakowuje |
| Wydano | 1985 (MS-DOS MZ); PE format since Windows NT 3.1, 1993 |
| Specyfikacja | learn.microsoft.com |