musl libc ldso notas de investigación de carga dinámica: 01

prefacio

  • musl es una biblioteca C estándar liviana construida sobre llamadas al sistema. Puede considerarse como una biblioteca C [modo de usuario], que pertenece a la misma categoría que glibc o uClibc.

  • La cadena de herramientas gcc basada en musl incluye una cadena de herramientas de compilación cruzada, que se puede usar para compilar Linux u otros sistemas operativos. Por ejemplo, Lite-OS y RT-Smart actuales usan musl gcc como cadena de herramientas de compilación y usan musl libc como cadena de herramientas de compilación cruzada. la aplicación en modo usuario.Biblioteca C.

  • musl se basa en la autorización del MIT, es de código abierto, liviano y gratuito. Se estima que cada vez más sistemas operativos han comenzado a adoptar musl como biblioteca C estándar

  • Recientemente, he estado estudiando el ldso de musl libc, que es la función de carga dinámica, que está integrada en musl libc.so.

archivo de formato elfo

  • El propio musl integra la función de carga dinámica ldso. Después de una mirada preliminar al código, se descubre que admite la carga dinámica de aplicaciones compiladas en formato elf.

  • Para las aplicaciones compiladas usando la cadena de herramientas musl gcc (cadena de herramientas de compilación cruzada), puede readelf -l xxx.elfverificar si hay información de enlace dinámico en el archivo elf. Si está incluida, debe usar musl ldso para cargar la biblioteca compartida dependiente

  • Ejemplo: comprobar si existe una aplicación vinculada dinámicamente [segmento de intérprete] información: INTERPtipo de

comando: aarch64-linux-musleabi-readelf.exe -l glib_gio_test_s.elforeadelf.exe -l glib_gio_test_s.elf

Se encuentra que existen INTERPsegmentos de información,[Requesting program interpreter: /lib/ld-musl-aarch64.so.1]

inserte la descripción de la imagen aquí

Ver la biblioteca compartida de la que depende el archivo elf

  • Elf compilado estáticamente no tiene información de enlace dinámico y no depende de bibliotecas compartidas, mientras que los archivos elf compilados y vinculados dinámicamente tienen información de enlace dinámico. Puede verificar las bibliotecas compartidas dependientes a través de aarch64-linux-musleabi-readelf.exe -d glib_gio_test_s.elforeadelf.exe -d glib_gio_test_s.elf

inserte la descripción de la imagen aquí

Ver la información de la cabeza del elfo.

  • Utilice aarch64-linux-musleabi-readelf.exe -h glib_gio_test_s.elfo readelf.exe -h glib_gio_test_s.elfpara ver la información del encabezado del elfo de la aplicación, como obtener la dirección de la función de entrada, etc.

inserte la descripción de la imagen aquí

Ver información del símbolo de elfo

  • Los llamados símbolos elfos son algunos nombres de variables, nombres de funciones, matrices, etc., que aún se pueden readelfver a través de

aarch64-linux-musleabi-readelf.exe -s glib_gio_test_s.elfO readelf.exe -s glib_gio_test_s.elftenga en cuenta que debido a que algunas aplicaciones tienen muchos símbolos en el archivo elf, puede generarlo en un archivo de texto y luego usar la herramienta de visualización de archivos para verlo.

aarch64-linux-musleabi-readelf.exe -s glib_gio_test_s.elf > sym_01.s, aquí exporte el símbolo a sym_01.sun archivo y luego use el visor de texto para abrirlo y verlo.

inserte la descripción de la imagen aquí

herramienta de visualización de elfos

  • Lo anterior es para ver el archivo elf a través de readelf, entonces, ¿hay alguna otra herramienta para ver el archivo elf?

  • Uso recomendado: EmEditorherramienta de visualización binaria, que puede ver, buscar y editar archivos binarios, y los archivos elf son en realidad archivos binarios.

inserte la descripción de la imagen aquí

  • Se recomienda utilizar Die, la famosa herramienta Detect It Easy para analizar y visualizar el archivo elf, el cual puede visualizarse en binario, desensamblarse y visualizarse en cada segmento, sección, etc.

  • Abrir un archivo elf con die

inserte la descripción de la imagen aquí

  • Utilice die para ver la información del archivo elf: encabezado elf
    inserte la descripción de la imagen aquí

resumen

  • Este artículo registra principalmente la visualización de archivos elf y tiene una comprensión preliminar de los archivos que se cargarán dinámicamente, es decir, antes de estudiar la carga dinámica, debe estar familiarizado con los archivos en formato elf, la composición de archivos, los encabezados de archivos, el encabezado del programa de archivos, cada sección del archivo, sección del archivo, qué contenido del archivo elf debe cargarse dinámicamente

  • En la actualidad, entiendo que un archivo elf tiene solo un encabezado y uno o más encabezados de programa. El tamaño de un encabezado de programa es fijo, es decir, una estructura. El contenido interno describe un segmento de información de segmento. ¿Cuántos archivos elf tiene? ¿Tiene el archivo?¿Encabezado del programa? Esto debe obtenerse analizando el encabezado del archivo elf: elf Header

  • Se recomienda comprobar las especificaciones estándar de elf, familiarizarse con elf, su composición y mecanismo de carga, lo cual es muy importante para el estudio posterior de la carga dinámica.

Supongo que te gusta

Origin blog.csdn.net/tcjy1000/article/details/132370600
Recomendado
Clasificación