Das Windows Portable Executable-Format hat seine eigenen kleinen Nuancen, daher finden Sie hier eine kurze Anleitung, wie sie funktionieren.

Eine Windows Portable Executable (PE) ist das native Windows-Dateiformat für ausführbare Dateien und andere binäre Dateitypen. Das PE-Dateiformat ist plattformunabhängig konzipiert, sodass es auf jedem Windows-Rechner verwendet werden kann dieselbe Betriebssystemversion und dieselbe Prozessorarchitektur ausführen, für die die Datei bestimmt war zusammengestellt.

Lassen Sie uns also das Windows PE-Dateiformat analysieren und mehr über seine Struktur und seine Bestandteile erfahren.

Was ist eine tragbare ausführbare Windows-Datei?

Bevor Sie das Windows Portable Executable-Format erkunden, ist es wichtig, die Grundlagen zu klären. Lassen Sie uns einen Schritt zurückgehen und mehr über das zugrunde liegende Konzept von Windows PE – COFF – erfahren.

Wenn Sie den Quellcode zu einem Programm kompilieren, generiert der Compiler eine Objektdatei (.obj). Diese Objektdatei enthält Anweisungen für den Computer im Binärformat.

COFF oder Common Object File Format ist ein standardisierter Satz von Konventionen zur Darstellung binärer Anweisungen. COFF hilft bei der Aufrechterhaltung der plattformübergreifenden Kompatibilität, da alle COFF-Dateiformate denselben Regeln und Konventionen für die Organisation von Code und Daten folgen. Obwohl COFF ursprünglich für die Verwendung auf *NIX-Systemen entwickelt wurde, ist es jetzt auf allen Plattformen allgegenwärtig.

Das Dateiformat Windows Portable Executable (PE) ist eine Modifikation von COFF und wurde entwickelt, um ausschließlich auf verwendet zu werden 32-Bit- und 64-Bit-Windows-Systeme. Im Gegensatz zu COFF, das ein standardisiertes Format für Objektdateien bereitstellt, bietet Windows PE ein standardisiertes Format für ausführbare Dateien und Bibliotheksdateien.

Es enthält Abschnitte und Kopfzeilen, die Informationen über die betreffende ausführbare Datei bereitstellen und dem Systemlader dabei helfen, Daten zu verwalten, die sich auf die ausführbare Datei beziehen. Die Header in einer PE-Datei helfen dem Systemlader, die Datei auf den Speicher abzubilden, Abhängigkeiten wie API-Exporte/-Importe aufzulösen, Ressourcen zu verwalten und die Datei für die Ausführung vorzubereiten.

Linux hat auch eine eigene Iteration des COFF; Es heißt Executable Link File oder kurz ELF-Binary. Sie können überprüfen, ob eine Datei ELF ist oder nicht, indem Sie die ausführen Dateibefehl unter Linux mit dem Dateinamen als erstes Argument.

Die Struktur einer tragbaren ausführbaren Windows-Datei

Das Portable Executable-Dateiformat besteht aus mehreren Komponenten, die jeweils einem bestimmten Zweck dienen. Zu diesen Komponenten gehören:

  • Abschnittsüberschriften, die das Layout und die Eigenschaften jedes Abschnitts der Datei beschreiben. Die Abschnitte selbst, die ausführbaren Code, Daten und Ressourcen enthalten.
  • Der PE-Header, der Informationen über die Gesamtstruktur und die Anforderungen der Datei bereitstellt.
  • Der DOS-Header, der ein kleines Programm enthält, das ausgeführt wird, wenn die Datei auf einem DOS-System ausgeführt wird.
  • Und schließlich die Header der PE-Abschnitte, die den Ort und die Attribute jedes Abschnitts innerhalb der Datei beschreiben.

Insgesamt arbeiten diese Komponenten zusammen, um ein strukturiertes Format zu erstellen, das es dem Betriebssystem ermöglicht, den in der Datei enthaltenen ausführbaren Code ordnungsgemäß zu laden, auszuführen und zu verwalten. Lassen Sie uns genau lernen, was jede Komponente tut.

DOS-Header

Der erste Teil einer PE-Datei wird als DOS-Header bezeichnet. Im DOS-Header ist eine kleine Menge ausführbaren Codes gespeichert, der auch auf einem DOS-Rechner ausgeführt werden kann.

Dieser Code wird auch MS-DOS-Stub genannt und wird verwendet, um eine Fehlermeldung auf Systemen auszugeben, die die PE-Datei nicht unterstützen.

PE-Header

Der Header Portable Executable enthält Informationen über die ausführbare Datei, z. B. wie groß die Datei ist, wo sich die verschiedenen Teile befinden und welche Ressourcen die ausführbare Datei benötigt. Der PE-Header enthält auch Informationen über die Art der ausführbaren Datei, ob es sich um eine Windows-.DLL-Datei oder eine .EXE-Datei.

Abschnittsüberschriften

Abschnitte werden implementiert, um die vielen Komponenten einer ausführbaren Datei wie Code, Daten und Ressourcen wie Textzeichenfolgen, Bilder usw. zu organisieren. Die Abschnittsüberschriften enthalten Informationen zur Größe und Position jedes Abschnitts sowie zu allen zugehörigen Flags.

Die jedem Abschnittsheader zugeordneten Flags können verschiedene Attribute des Abschnitts angeben, beispielsweise ob er ausführbar, beschreibbar oder lesbar ist. Diese Flags helfen dem Betriebssystem, den Inhalt jedes Abschnitts während der Programmausführung richtig zu laden und zu verwalten.

Abschnitte

Die Abschnitte selbst umfassen den eigentlichen Code, Daten und Ressourcen der ausführbaren Datei. Jedes Segment ist an einer bestimmten Speichergrenze ausgerichtet und verfügt über einen eigenen Satz von Attributen, die sich darauf auswirken, wie das Betriebssystem damit umgeht.

Jetzt wissen Sie alles über das tragbare ausführbare Windows-Dateiformat

Die Windows Portable Executable ist ein robustes und vielseitiges Dateiformat, das zur Erstellung einer Vielzahl von Windows-Anwendungen und Systemkomponenten verwendet wird. Durch das Verständnis der Struktur des PE-Dateiformats können Entwickler effiziente Apps erstellen, die die charakteristischen Eigenschaften von Windows nutzen.

Neben dem Gewinnen eines gründlichen Verständnisses der Plattform, auf der Ihre App ausgeführt wird, indem Sie einige Standardregeln befolgen Codierungspraktiken können Sie die Qualität der Anwendung unabhängig von der Plattform, auf der sie ausgeführt wird, maximieren An.