GNU/Linux >> Tutoriales Linux >  >> Linux

Herramienta para modificar la sección dinámica de un binario ELF

reemplazar la ruta a la biblioteca existente con una ruta personalizada

Si esta es su propia biblioteca, entonces probablemente la vincule así:

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

en lugar del propio:

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

El primer enfoque le dice al enlazador de Linux que la aplicación necesita precisamente esa biblioteca, solo esa biblioteca y ninguna anulación debería ser posible. El segundo enfoque dice que la aplicación necesita la biblioteca que se instalaría en algún lugar del sistema, ya sea en la ruta de la biblioteca predeterminada o en una señalada por $LD_LIBRARY_PATH (se buscaría durante el tiempo de ejecución). -L se usa solo durante el tiempo de enlace.

De lo contrario, en lugar de parchear el ELF, primero verifique si puede sustituir la biblioteca usando un enlace simbólico. Este es el truco habitual:es difícil modificar el ejecutable después, pero es muy fácil cambiar la ubicación de los puntos de enlace simbólico.


patchelf es lo que quieres

$ patchelf --replace-needed LIB_ORIGIN  LIB_NEW  ELF_FILE

Para ver el efecto

$ readelf -d ELF_FILE

Instalar las herramientas es fácil:

$ sudo apt-get install patchelf readelf

Linux
  1. Uso de la herramienta SS para la resolución de problemas de red

  2. ¿Un entorno similar a una concha para el procesamiento binario?

  3. Nutty:una herramienta de diagnóstico de red para Ubuntu

  4. ¿Para qué sirven los archivos .la de libtool?

  5. ¿Cómo compilar una biblioteca dinámica para una aplicación JNI en Linux?

Ctop:una herramienta de monitoreo de línea de comandos para contenedores de Linux

Pick:una herramienta de búsqueda difusa de línea de comandos para Linux

Una introducción a Cockpit, una herramienta de administración basada en navegador para Linux

Configuraciones de direcciones IP estáticas y dinámicas para DHCP

herramienta similar a teamviewer para ssh?

¿Herramienta para medir la calidad de la entropía?