GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Werkzeug zum Modifizieren des dynamischen Abschnitts einer ELF-Binärdatei

Ersetzen Sie den Pfad zur vorhandenen Bibliothek durch einen benutzerdefinierten Pfad

Wenn dies Ihre eigene Bibliothek ist, verknüpfen Sie sie wahrscheinlich so:

$ cc -o prog1 -l/full/path/to/libABC.so prog1.o

statt des eigentlichen:

$ cc -o prog1 -L/full/path/to/ -lABC prog1.o

Der erste Ansatz teilt dem Linux-Linker mit, dass die Anwendung genau diese Bibliothek benötigt, nur diese Bibliothek und kein Überschreiben möglich sein sollte. Der zweite Ansatz besagt, dass die Anwendung die Bibliothek benötigt, die irgendwo auf dem System installiert werden würde, entweder im Standardbibliothekspfad oder in einem Pfad, auf den der $LD_LIBRARY_PATH verweist (der während der Laufzeit nachgeschlagen würde). -L wird nur während der Verbindungszeit verwendet.

Anstatt die ELF zu patchen, prüfen Sie andernfalls zuerst, ob Sie die Bibliothek mit einem Symlink ersetzen können. Dies ist der übliche Trick:Es ist schwierig, die ausführbare Datei nachträglich zu ändern, aber es ist sehr einfach, die Stelle der Symlink-Punkte zu ändern.


patchelf ist, was Sie wollen

$ patchelf --replace-needed LIB_ORIGIN  LIB_NEW  ELF_FILE

Um den Effekt zu sehen

$ readelf -d ELF_FILE

Die Installation der Tools ist einfach:

$ sudo apt-get install patchelf readelf

Linux
  1. Verwenden des SS-Tools für die Netzwerkfehlerbehebung

  2. Eine Shell-ähnliche Umgebung für die Binärverarbeitung?

  3. Nutty – Ein Netzwerkdiagnosetool für Ubuntu

  4. C++ Dynamic Shared Library unter Linux

  5. Abschnitt zur ELF-Datei hinzufügen

Ctop – Ein Befehlszeilen-Überwachungstool für Linux-Container

Pick – Ein Befehlszeilen-Fuzzy-Suchtool für Linux

Eine Einführung in Cockpit, ein browserbasiertes Verwaltungstool für Linux

Statische und dynamische IP-Adresskonfigurationen für DHCP

Teamviewer-ähnliches Tool für ssh?

Werkzeug zur Messung der Entropiequalität?