README
Beim Start eines Prozesses lädt Linux das Programm-Binary und die notwendigen Bibliotheken. Die Funktionen dieser lassen sich durch eigene Varianten ersetzen. Auf diese Weise protokollieren sie mit wenigen Zeilen C-Code, was geschieht.
Möchten Sie herausfinden, welche Dateien ein Programm öffnet oder löscht und welche Netzwerkverbindungen es aufbaut? Mit einem Trick lassen sich Standardfunktionen wie das Öffnen von Dateien oder das Lauschen auf einem TCP-Port durch selbst programmierte Versionen ersetzen, die nicht nur das Programmverhalten protokollieren, sondern es auf Wunsch sogar verändern. Den Schlüssel zu diesen Möglichkeiten bietet die Variable LD_PRELOAD, die den Linux-Programmlader beeinflusst.
Wenn Sie ein Programm starten, erzeugt der Linux-Kernel einen neuen Prozess und lädt die ausführbare Programmdatei in dessen Speicherbereich. Das ist aber meist nicht alles: Programme nutzen in der Regel Bibliotheken, die dynamisch hinzugeladen werden. Welche davon eine Applikation lädt, erfahren Sie über das Kommando ldd1 1.
„Echte“ Bibliotheken sind in Abbildung1 1nur die Einträge libselinux. so.1 (Unterstützung für die Sicherheitserweiterung SELinux), libc.so.6 (die Standard-C-Bibliothek) und libpcre2 ‐8. so.0 (Funktionen, mit denen ein Programm reguläre Ausdrücke verarbeitet).
Der oberste Eintrag linux ‐ gehört zum Kernel. Der untere (ld ‐linu x‐) ist