es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Implementación del empacador de ELF para bibliotecas compartidas en AArch64.

He implementado un empaquetador elf para la ejecución en aarch64.
Ahora, me gustaría empaquetar una biblioteca compartida.

Para los binarios ejecutables, el punto de entrada es reemplazado con la dirección
del cargador. El trabajo del cargador es descifrar la sección .text y finalmente saltar a la sección .text descifrada.

Sin embargo, no hay punto de entrada para las bibliotecas compartidas.
¿Dónde debería ubicarse mi cargador?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como no existe un punto de entrada para bibliotecas compartidas, el cargador no puede reemplazarlo con la dirección como en el caso de los archivos binarios ejecutables. En su lugar, el cargador para bibliotecas compartidas suele estar integrado en el enlazador dinámico, que es responsable de resolver dependencias y cargar bibliotecas compartidas en tiempo de ejecución.

    El enlazador dinámico lee el encabezado ELF de la biblioteca compartida para determinar sus dependencias y cargar los símbolos necesarios. Luego, mapea la biblioteca compartida en la memoria y resuelve las reubicaciones antes de finalmente pasar el control al código de la aplicación que utiliza la biblioteca compartida.

    Por lo tanto, para empaquetar una biblioteca compartida, es crucial asegurarse de su compatibilidad con el enlazador dinámico y no obstaculizar su capacidad para cargar y resolver símbolos. Una manera de hacer esto es usar un empacador bien conocido y ampliamente utilizado que sea compatible con el enlazador dinámico. Otra forma es modificar el propio enlazador dinámico para reconocer y manejar adecuadamente la biblioteca compartida empaquetada.

    En resumen, el cargador para bibliotecas compartidas está integrado en el enlazador dinámico, y cualquier intento de empaquetar una biblioteca compartida debe tener en cuenta la compatibilidad con el enlazador dinámico para garantizar la carga adecuada y la resolución de dependencias.

Comments are closed.