Linker, Loader und ausführbare Formate
Was ist der Hauptgrund dafür, eine ausführbare Datei als PIE (Position Independent Executable) zu erzeugen?
- ADamit die ausführbare Datei auf jedem Betriebssystem laufen kann
- BDamit alle Bibliotheken in der ausführbaren Datei enthalten sind
- 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.