Linker, loader en uitvoerbare formaten

Wat is de belangrijkste reden om een uitvoerbaar bestand als PIE (position-independent executable) te bouwen?

  1. AOm het uitvoerbare bestand op elk OS te laten werken
  2. BOm alle bibliotheken in het uitvoerbare bestand op te nemen
  3. CZodat ook de code van het uitvoerbare bestand zelf met ASLR bij elke uitvoering op een ander adres kan worden geplaatst
Antwoord en toelichting tonen

Antwoord: C. Zodat ook de code van het uitvoerbare bestand zelf met ASLR bij elke uitvoering op een ander adres kan worden geplaatst

Oude uitvoerbare bestanden werden gemaakt in de veronderstelling dat ze op een vast adres worden geladen, dus ook met ASLR konden alleen bibliotheken en stack worden verschoven en waren de adressen van de hoofdcode bij aanvallers bekend. PIE maakt ook de hoofdcode als position-independent code die overal werkt, zodat ook de adressen van de hoofdcode willekeurig kunnen zijn. Veel huidige Linux-distributies gebruiken PIE standaard.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Wat doet de loader van het OS bij het starten van een programma (zoals execve op Linux)?
  2. Welke uitspraak is juist over het adres waar het OS in een C-programma de uitvoering begint (entry point)?
  3. Wat gebeurt er in het algemeen met de waarde 3 als de C-functie main eindigt met „return 3;”?
  4. Wat gebeurt er als het commando strip op een uitvoerbaar bestand wordt gebruikt?
  5. Hoe worden zwakke symbolen (weak symbols) door de linker behandeld?

Vergelijkingen bij dit onderwerp