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.elf
verificar 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:
INTERP
tipo de
comando: aarch64-linux-musleabi-readelf.exe -l glib_gio_test_s.elf
oreadelf.exe -l glib_gio_test_s.elf
Se encuentra que existen INTERP
segmentos de información,[Requesting program interpreter: /lib/ld-musl-aarch64.so.1]
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.elf
oreadelf.exe -d glib_gio_test_s.elf
Ver la información de la cabeza del elfo.
- Utilice
aarch64-linux-musleabi-readelf.exe -h glib_gio_test_s.elf
oreadelf.exe -h glib_gio_test_s.elf
para ver la información del encabezado del elfo de la aplicación, como obtener la dirección de la función de entrada, etc.
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
readelf
ver a través de
aarch64-linux-musleabi-readelf.exe -s glib_gio_test_s.elf
O readelf.exe -s glib_gio_test_s.elf
tenga 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.s
un archivo y luego use el visor de texto para abrirlo y verlo.
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:
EmEditor
herramienta de visualización binaria, que puede ver, buscar y editar archivos binarios, y los archivos elf son en realidad archivos binarios.
-
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
- Utilice die para ver la información del archivo elf: encabezado elf
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.