Linux - pliki wykonywalne

Linux - pliki wykonywalne
WI
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:21
0

Witam,
posiadam komputer z systemem Debian oraz środowiskiem KDE. Moje programy (w sensie pliki wykonywalne) w przeglądarce Delphi są uważane za bibliotekę współdzieloną. Korzystając z readelf zerknąłem sobie w nagłówek mojego exec'a, a tam:
Type: DYN (Shared object file)
A w takim /bin/bash:
Type: EXEC (Executable file)

Moje pytania: o co chodzi? Czy robi to jakąś różnice?

pingwindyktator
  • Rejestracja:ponad 12 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Kraków
  • Postów:1055
0

Tak sie dzieje kiedy kompilujesz z opcją Position Independent Code (-fPIE dla plików wykonywalnych. Możliwe, że ta opcja jest włączona by default).
EDIT: na Ubuntu jest to włączone: https://wiki.ubuntu.com/SecurityTeam/PIE
EDIT2: i na Debianie: https://wiki.debian.org/Hardening/PIEByDefaultTransition


do not code, write prose
edytowany 3x, ostatnio: pingwindyktator
Zobacz pozostały 1 komentarz
AL
Tak gwoli dobrego rozwinięcia skrótu to powinno być positiom independent executable, code ma w gcc switch PIC.
pingwindyktator
fPIE generuje position independent code dla plików wykonywanych. Jest to "włączenie tego samego ficzera", który włącza fPIC, jednak fPIC nie możesz użyć dla executable.
pingwindyktator
Kolego @alagner, usuwasz komentarze i się robi burdel. Zapoznaj się z dokumentacja gcc.
AL
Przepraszam, liczyłem że poprawiłem dość szybko a tu jednak nie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.