GNU/Linux >> Belajar Linux >  >> Linux

Alat untuk memodifikasi bagian dinamis dari biner ELF

ganti jalur ke perpustakaan yang ada dengan jalur khusus

Jika ini perpustakaan Anda sendiri, Anda mungkin menautkannya seperti itu:

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

bukannya yang tepat:

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

Pendekatan pertama memberi tahu Linux linker bahwa aplikasi membutuhkan perpustakaan itu dengan tepat, hanya perpustakaan itu dan tidak boleh ada penggantian. Pendekatan kedua memberi tahu bahwa aplikasi memerlukan pustaka yang akan diinstal di suatu tempat di sistem, baik di jalur pustaka default atau yang ditunjukkan oleh $LD_LIBRARY_PATH (akan dicari selama waktu proses). -L hanya digunakan selama waktu tautan.

Jika tidak, alih-alih menambal ELF, periksa dulu apakah Anda dapat mengganti pustaka menggunakan symlink. Ini adalah trik yang biasa:sulit untuk memodifikasi executable sesudahnya, tetapi sangat mudah untuk mengubah tempat ke titik symlink.


patchelf adalah yang Anda inginkan

$ patchelf --replace-needed LIB_ORIGIN  LIB_NEW  ELF_FILE

Untuk melihat efeknya

$ readelf -d ELF_FILE

Instal alatnya mudah:

$ sudo apt-get install patchelf readelf

Linux
  1. Menggunakan alat SS untuk pemecahan masalah jaringan

  2. Lingkungan Seperti Shell Untuk Pemrosesan Biner?

  3. Nutty – Alat Diagnostik Jaringan untuk Ubuntu

  1. header file ELF

  2. Untuk apa file .la libtool?

  3. Bagaimana cara mengkompilasi pustaka dinamis untuk aplikasi JNI di linux?

  1. Deepin System Monitor – Alat Monitor Sistem Bergaya untuk Deepin OS

  2. C++ Dynamic Shared Library di Linux

  3. Alat untuk mengukur kualitas entropi?