2010-09-19 8 views

Antwort

8

Nein, nicht unbedingt. Der PE-Eintrittspunkt befindet sich in der IMAGE_OPTIONAL_HEADER Struktur definiert ist, in AddressOfEntryPoint Feld:

Ein Zeiger auf die Eintrittspunktfunktion, bezogen auf die Bildbasisadresse. Bei ausführbaren Dateien ist dies die Startadresse. Für Gerätetreiber ist dies die Adresse der Initialisierungsfunktion. Die Einstiegspunktfunktion ist für DLLs optional. Wenn kein Einstiegspunkt vorhanden ist, ist dieses Mitglied Null.

Ein Linker kann dies so einstellen, wie es sein soll, solange es einen gültigen relativen virtuellen Offset in das PE gibt. Einige Compiler und Linker haben möglicherweise die Konvention, den Einstiegspunkt an den Anfang des Text/Code-Abschnitts zu setzen, aber dafür gibt es kein OS- oder PE-Format.

+1

Ich habe festgestellt, dass ich "AddressOfEntryPoint" nicht willkürlich festlegen konnte, wenn ich Windows 7 benutze. Ich erstelle kleine ausführbare Dateien ohne Datenverzeichnisse oder Abschnittstabellen. Von Versuch und Irrtum fand ich, dass der Eintrag direkt nach dem PE-Header zeigen kann, aber nicht mit einem kleinen zusätzlichen Offset. –