GNU/Linux >> Tutoriels Linux >  >> Linux

Outil pour modifier la section dynamique d'un binaire ELF

remplacer le chemin d'accès à la bibliothèque existante par un chemin personnalisé

S'il s'agit de votre propre bibliothèque, vous l'avez probablement liée comme ceci :

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

au lieu du propre :

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

La première approche indique à l'éditeur de liens Linux que l'application a précisément besoin de cette bibliothèque, seule cette bibliothèque et aucun remplacement ne devrait être possible. La deuxième approche indique que l'application a besoin de la bibliothèque qui serait installée quelque part sur le système, soit dans le chemin de la bibliothèque par défaut, soit dans celui pointé par $LD_LIBRARY_PATH (serait recherché pendant l'exécution). -L n'est utilisé qu'au moment de la liaison.

Sinon, au lieu de patcher l'ELF, vérifiez d'abord si vous pouvez remplacer la bibliothèque en utilisant un lien symbolique. C'est l'astuce habituelle :il est difficile de modifier l'exécutable par la suite, mais il est très facile de changer l'emplacement des points de lien symbolique.


patchelf est ce que vous voulez

$ patchelf --replace-needed LIB_ORIGIN  LIB_NEW  ELF_FILE

Pour voir l'effet

$ readelf -d ELF_FILE

Installer les outils est facile :

$ sudo apt-get install patchelf readelf

Linux
  1. Deepin System Monitor - Un outil de surveillance système élégant pour Deepin OS

  2. Bibliothèque partagée dynamique C++ sous Linux

  3. Comment compiler une bibliothèque dynamique pour une application JNI sous Linux ?

  4. outil de type teamviewer pour ssh?

  5. Bibliothèque Bluetooth pour BlueZ (Windows)

Ctop - Un outil de surveillance en ligne de commande pour les conteneurs Linux

Pick - Un outil de recherche floue en ligne de commande pour Linux

Une introduction à Cockpit, un outil d'administration basé sur un navigateur pour Linux

Configurations d'adresses IP statiques et dynamiques pour DHCP

Impossible de charger la bibliothèque dynamique 'libnvinfer.so.6'

Outil de mesure de la qualité de l'entropie ?