Linker, Loader und ausführbare Formate

Was ist der Hauptgrund dafür, eine ausführbare Datei als PIE (Position Independent Executable) zu erzeugen?

  1. ADamit die ausführbare Datei auf jedem Betriebssystem laufen kann
  2. BDamit alle Bibliotheken in der ausführbaren Datei enthalten sind
  3. CDamit auch der Code der ausführbaren Datei selbst per ASLR bei jeder Ausführung an einer anderen Adresse liegen kann
Antwort und Erläuterung anzeigen

Antwort: C. Damit auch der Code der ausführbaren Datei selbst per ASLR bei jeder Ausführung an einer anderen Adresse liegen kann

Ältere ausführbare Dateien wurden unter der Annahme erstellt, dass sie an einer festen Adresse geladen werden; selbst mit ASLR ließen sich nur Bibliotheken und Stack verschieben, und die Adressen des Hauptcodes waren Angreifern bekannt. PIE erzeugt auch den Hauptteil als positionsunabhängigen Code, der an jeder Adresse lauffähig ist, sodass auch die Adressen des Hauptteils zufällig sein können. Viele heutige Linux-Distributionen verwenden PIE standardmäßig.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Was tut der Loader des Betriebssystems beim Start eines Programms (z. B. unter Linux mit execve)?
  2. Welche Aussage zur Adresse, an der das Betriebssystem bei einem C-Programm die Ausführung zuerst beginnt (Entry Point), ist richtig?
  3. Was geschieht im Allgemeinen mit dem Wert 3, wenn die Funktion main in C mit „return 3;“ endet?
  4. Was geschieht, wenn der Befehl strip auf eine ausführbare Datei angewendet wird?
  5. Welche Aussage zur Behandlung schwacher Symbole (Weak Symbols) beim Linker ist richtig?

Vergleiche zu diesem Thema