encyklopedia.space

Binary executable

Plik binarny wykonywalny (ang. binary executable) to plik zawierający bezpośrednio maszynowy kod programu, który może zostać uruchomiony przez system operacyjny po załadowaniu do pamięci procesora. W odróżnieniu od skryptów tekstowych, binarne pliki wykonywalne nie wymagają interpretacji przez interpreter – system operacyjny przekazuje je procesorowi do natychmiastowego wykonania.

Budowa i struktura

Typowy plik wykonywalny składa się z następujących sekcji:

  • Nagłówek – opisuje format pliku, architekturę procesora (x86, ARM itp.) oraz pozycje kolejnych segmentów.
  • Segmenty kodu (text) – zawierają skompilowany kod maszynowy.
  • Segmenty danych (data, bss) – przechowują zmienne statyczne i nieinicjalizowane.
  • Tablice symboli – informacje potrzebne przy linkowaniu i debugowaniu.
  • Tablice relokacji – opisują miejsca, które muszą zostać zmodyfikowane podczas ładowania.
  • Informacje o zasobach – np. obrazy, ikony, informacje o wersji.

Popularne formaty plików wykonywalnych

W zależności od platformy i systemu operacyjnego używa się różnych formatów:

Proces powstawania pliku binarnego

Tworzenie pliku wykonywalnego obejmuje kilka etapów:

  1. Kompilacjakompilator zamienia kod źródłowy (np. w językach C, C++, Rust) na kod maszynowy w postaci plików obiektowych.
  2. Linkowanielinker łączy wiele plików obiektowych oraz biblioteki (static lub dynamic) w jedną całość, tworząc finalny plik binarny.
  3. Optymalizacja – narzędzia takie jak optymalizator (np. strip) mogą usuwać niepotrzebne informacje, zmniejszając rozmiar.

Ładowanie i uruchamianie

Po wywołaniu pliku wykonywalnego system operacyjny wykonuje następujące czynności:

  • Odczytuje nagłówek i sprawdza zgodność formatu oraz wymaganą architekturę.
  • Ładuje segmenty kodu i danych do pamięci wirtualnej procesu.
  • Rozwiązuje relokacje i wiązania dynamiczne (np. podlinkowanie bibliotek DLL w Windows lub .so w Linux).
  • Ustawia wskaźnik instrukcji (IP/EIP/RIP) na punkt startowy (zazwyczaj funkcję main).
  • Rozpoczyna wykonanie kodu na procesorze.

Bezpieczeństwo i ochrona

Pliki binarne są często celem ataków, dlatego wprowadzono szereg mechanizmów ochronnych:

  • ASLR (Address Space Layout Randomization) – losowe rozmieszczanie segmentów w pamięci.
  • DEP/NX (Data Execution Prevention) – oznaczanie stron pamięci jako nie‑wykonywalne.
  • Podpisy cyfrowe – weryfikacja integralności i autentyczności pliku (np. Code Signing).
  • Kontrola dostępu – systemy uprawnień ograniczające możliwość uruchamiania nieznanych binariów.

W kontekście bezpieczeństwa komputerowego analiza plików binarnych często wykorzystuje techniki reverse engineering oraz narzędzia takie jak disassembler i debugger.

Narzędzia i środowiska

Do pracy z plikami binarnymi wykorzystywane są m.in.:

Historia

Pierwsze binarne pliki wykonywalne pojawiły się w latach 1970 w systemach mainframe, gdzie programy były ładowane bezpośrednio z taśm magnetycznych. W miarę rozwoju systemów operacyjnych powstały bardziej złożone formaty, takie jak COFF w systemie UNIX System V oraz wspomniane ELF (wprowadzone w 1990 roku). W świecie Windows format PE zadebiutował wraz z Windows NT w połowie lat 1990.

Zobacz także