Estoy tratando de obtener el desplazamiento correcto al nombre de la sección accediendo al miembro de un archivo elf, pero sigue dándome cero, o nulo ...obteniendo el miembro sh_name en un archivo elf de cabecera de sección
supone que tengo que usar sólo mmap()
y los elf.h
- sin funciones cooperadoras
Así que lo hice:
void* map_start = mmap(0, fd_stat.st_size, PROT_READ | PROT_WRITE , MAP_SHARED, fd, 0))
header = (Elf32_Ehdr *) map_start;
secoff = header->e_shoff;
section = (Elf32_Shdr *)(map_start + secoff);
pero cuando lo hago:
printf("name offset = %d\n", (section->sh_name));
me sigue dando 0 ... ¿Qué estoy haciendo mal?
supongo que es un desplazamiento, pero ¿no se supone que debe imprimirse el desplazamiento como un int cuando lo puse en printf? ¿Cómo imprimo el valor? en cualquier forma que esté representado. También, ¿cómo obtengo el nombre real? Sé que obtengo el desplazamiento en la sección específica en .shstrtab, pero ¿debo imprimir el nombre? quiero decir, ¿cómo me refiero a la tabla de cadenas? Traté de hacer algo como printf ("% s", sction + header.shstrtab [nameoffset]); pero eso no funcionó para mí ... – user1431301
@ user1431301 Ver la actualización. –
@EmployedRussian: ¿Podría dar un ejemplo de cómo hacer el reverso, es decir, un ejemplo de código sobre cómo crear la tabla de cadenas y luego la sección con algunos valores? –