Vous utilisez un navigateur obsolète, veuillez le mettre à jour.
Veuillez utiliser un navigateur internet moderne avec JavaScript activé pour naviguer sur OpenClassrooms.com
Une question ? Pas de panique, on va vous aider !
Ce sujet est fermé.
Bonjour !
J'essaye de récupérer dans un programme le nom des symboles d'un fichier elf (comme quand on fait nm fichier.o) et je n'y arrive pas .
Pour l'instant, je récupère la section SYM_TAB, j'ai compris que le Elf64_sym st_name était un index de la string table mais je n'arrive pas plus .
int main(int ac, char **av) { int fd; int filesize; void *buf; struct stat s; Elf64_Ehdr *elf; Elf64_Shdr *sections; Elf64_Sym *sym; uint64_t str_tbl_ndx; fd = open(av[1], O_RDONLY); if (fd == -1) { return 84; } filesize = lseek(fd, 0, SEEK_END); buf = mmap(NULL, filesize, PROT_READ, MAP_SHARED, fd, 0); if (buf != NULL) { int i = 0; elf = (Elf64_Ehdr *)(buf); sections = (Elf64_Shdr *)(buf + elf->e_shoff); char *strtab = (char *)((elf->e_shentsize * elf->e_shstrndx) + elf->e_shoff); for (int i = 0; i < elf->e_shnum; i++) { if (sections[i].sh_type == SHT_SYMTAB) { printf("Sym Table found !\n"); sym = (Elf64_Sym *)(buf + sections[i].sh_offset); int size = (sections[i].sh_size / sizeof(Elf64_Sym)); for (int i = 0; i < size; i++) { printf("name : %s\n", strtab + sym[i].st_name); } } } } }
J'ai l'impression que le problème vient de ma "strtab" mais je ne suis pas sur .
Deux jours que je suis bloqué la dessus je demande de l'aide maintenant Quelqu'un aurait une idée ?
merci de votre aide