Format Windows Portable Executable ma swoje własne małe niuanse, więc oto krótki przewodnik na temat ich działania.

Windows Portable Executable (PE) to natywny format plików systemu Windows dla plików wykonywalnych i innych typów plików binarnych. Format pliku PE został zaprojektowany tak, aby był niezależny od platformy, dzięki czemu można go używać na dowolnym komputerze z systemem Windows z tą samą wersją systemu operacyjnego i architekturą procesora, dla których był plik skompilowane.

Przeanalizujmy więc format pliku Windows PE i poznajmy jego strukturę i składniki składowe.

Co to jest przenośny plik wykonywalny systemu Windows?

Przed zapoznaniem się z formatem Windows Portable Executable ważne jest, aby wyjaśnić podstawy. Cofnijmy się o krok i poznajmy podstawową koncepcję środowiska Windows PE — COFF.

Podczas kompilowania kodu źródłowego do programu kompilator generuje plik obiektowy (.obj). Ten plik obiektowy zawiera instrukcje dla komputera w formacie binarnym.

COFF lub Common Object File Format to ustandaryzowany zestaw konwencji reprezentacji instrukcji binarnych. COFF pomaga w utrzymaniu zgodności między platformami, ponieważ wszystkie formaty plików COFF są zgodne z tym samym zestawem reguł i konwencji dotyczących organizowania kodu i danych. Chociaż COFF został pierwotnie opracowany do użytku w systemach *NIX, obecnie jest wszechobecny na wszystkich platformach.

instagram viewer

Format pliku Windows Portable Executable (PE) jest modyfikacją COFF i został opracowany do wyłącznego użytku 32-bitowe i 64-bitowe systemy Windows. W przeciwieństwie do COFF, który zapewnia znormalizowany format plików obiektowych, Windows PE zapewnia znormalizowany format plików wykonywalnych i plików bibliotek.

Zawiera sekcje i nagłówki, które dostarczają informacji o danym pliku wykonywalnym i pomagają programowi ładującemu system zarządzać danymi związanymi z plikiem wykonywalnym. Nagłówki w pliku PE pomagają programowi ładującemu system mapować plik do pamięci, rozwiązywać zależności, takie jak eksport/import API, zarządzać zasobami i przygotowywać plik do wykonania.

Linux ma również własną iterację COFF; nazywa się Executable Link File lub w skrócie binarny ELF. Możesz sprawdzić, czy plik jest ELF, czy nie, uruchamiając polecenie pliku w systemie Linux z nazwą pliku jako pierwszym argumentem.

Struktura przenośnego pliku wykonywalnego systemu Windows

Format pliku Portable Executable składa się z kilku komponentów, z których każdy ma określony cel. Te komponenty obejmują:

  • Nagłówki sekcji, które opisują układ i charakterystykę każdej sekcji pliku Same sekcje, które zawierają kod wykonywalny, dane i zasoby.
  • Nagłówek PE, który zawiera informacje o ogólnej strukturze i wymaganiach pliku.
  • Nagłówek DOS, który zawiera mały program uruchamiany podczas wykonywania pliku w systemie DOS.
  • I wreszcie nagłówki sekcji PE, które opisują lokalizację i atrybuty każdej sekcji w pliku.

Ogólnie rzecz biorąc, te komponenty współpracują ze sobą, tworząc ustrukturyzowany format, który umożliwia systemowi operacyjnemu prawidłowe ładowanie, wykonywanie i zarządzanie kodem wykonywalnym zawartym w pliku. Dowiedzmy się dokładnie, co robi każdy komponent.

Nagłówek DOS-a

Pierwsza część pliku PE nazywana jest nagłówkiem DOS. Niewielka ilość kodu wykonywalnego jest przechowywana w nagłówku DOS, który można również uruchomić na maszynie DOS.

Ten kod jest również nazywany kodem pośredniczącym MS-DOS i służy do zgłaszania komunikatu o błędzie w systemach, które nie obsługują pliku PE.

Nagłówek PE

Nagłówek Portable Executable zawiera informacje o pliku wykonywalnym, takie jak rozmiar pliku, położenie poszczególnych części i zasoby, jakich potrzebuje plik wykonywalny. Nagłówek PE zawiera również informacje o typie pliku wykonywalnego, czy jest to plik wykonywalny Plik .DLL systemu Windows lub .EXE.

Nagłówki sekcji

Sekcje są implementowane w celu uporządkowania wielu składników pliku wykonywalnego, takich jak kod, dane i zasoby, takie jak ciągi tekstowe, obrazy itp. Nagłówki sekcji zawierają informacje dotyczące rozmiaru i lokalizacji każdej sekcji, a także wszelkie powiązane flagi.

Flagi skojarzone z każdym nagłówkiem sekcji mogą wskazywać różne atrybuty sekcji, takie jak czy jest ona wykonywalna, zapisywalna lub czytelna. Te flagi pomagają systemowi operacyjnemu prawidłowo ładować i zarządzać zawartością każdej sekcji podczas wykonywania programu.

Sekcje

Same sekcje zawierają rzeczywisty kod, dane i zasoby pliku wykonywalnego. Każdy segment jest wyrównany do określonej granicy pamięci i ma własny zestaw atrybutów, które wpływają na sposób, w jaki system operacyjny go obsługuje.

Teraz wiesz wszystko o przenośnym formacie pliku wykonywalnego systemu Windows

Windows Portable Executable to solidny i wszechstronny format plików używany do tworzenia szerokiej gamy aplikacji i komponentów systemu Windows. Dzięki zrozumieniu struktury formatu pliku PE programiści mogą tworzyć wydajne aplikacje wykorzystujące charakterystyczne cechy systemu Windows.

Oprócz dogłębnego zrozumienia platformy, na której będzie działać Twoja aplikacja, wystarczy postępować zgodnie z kilkoma standardowymi dobrami kodowania, będziesz w stanie zmaksymalizować jakość aplikacji niezależnie od platformy, na której jest uruchomiona NA.