2012-07-02 10 views
7
  1. Obtengo un símbolo y obtengo el hexedito de un archivo elf. ¿Cómo puedo saber en qué sección aparece este símbolo?Tabla de cadenas en ELF

  2. ¿Cuál es la diferencia entre strtab y shstrtab? también hay una variedad de cadenas de símbolos?

Cuando llego índice en la tabla de nombres, es que el índice de strtab o shstrtab?

Respuesta

8

Para la primera pregunta, necesitaríamos el hexedit del archivo elf para entenderlo correctamente.

Para la segunda pregunta - strtab significa String Table shstrtab soportes para Section Header String table.

Cuando leemos el encabezado ELF, vemos que cada estructura ElfHeader contiene un miembro llamado e_shstrndx. Este es un índice de shstrtab. Si usa este índice y luego lee de shstrtab, puede encontrar el nombre de esa sección.

strtab, es la tabla de cadenas para todas las demás referencias. Cuando lee símbolos de un objeto ELF, cada estructura SYmbol (Elf32_Sym) tiene un miembro llamado st_name. Este es un índice en strtab para obtener el nombre de la cadena de ese símbolo.

¿Puede dar más detalles sobre la variedad de cadenas de símbolos? Además, ¿qué quieres decir con la tabla de nombres?

Puede consultar el siguiente enlace - Reading ELF String Table on Linux from C

la esperanza que esto responda a su pregunta.

+0

gracias. ¿Podrías por favor dar un ejemplo de lo que son "otras referencias"? ¿Qué pasa con el nombre de la sección? también aparecen en strtab? – user1479376

+0

SOrry estuvo fuera por un par de días. Los nombres de las secciones se almacenan en .shrtrtab. Por todas las otras referencias me refiero a los símbolos que se almacenan en DIE Blocks –

+0

esto debería marcar como respuesta. – Jichao

Cuestiones relacionadas