Bonjour, je cherche a lister les symbole d'un fichier Elf, pour le moment je parcours le tableau de Elf32_shdr en affichant le string corespondant a leur index (sh_name) dans la strtab.
Mais je crois que ce n'est pas ce que je souhaite.
je souhaite retrouver les element que nm listerais.
Exemple:
ma sortie :
00name:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 i = 0; while (i < shnum) // shnum = la valeur e_shnum de la structure Header su fichier Elf { printf("%02dname: %s ", i, &strtab[shdr[i].sh_name]); // strtab = le strtab du fichier elf , shdr , le tableau de shdr. printf("\n"); ++i; }
01name: .interp
02name: .note.ABI-tag
03name: .note.gnu.build-id
04name: .gnu.hash
05name: .dynsym
06name: .dynstr
07name: .gnu.version
08name: .gnu.version_r
09name: .rel.dyn
10name: .rel.plt
11name: .init
12name: .plt
13name: .text
14name: .fini
15name: .rodata
16name: .eh_frame_hdr
17name: .eh_frame
18name: .ctors
19name: .dtors
20name: .jcr
21name: .dynamic
22name: .got
23name: .got.plt
24name: .data
25name: .bss
26name: .comment
27name: .shstrtab
28name: .symtab
29name: .strtab
et nm,
0804a14c d _DYNAMIC
0804a218 d _GLOBAL_OFFSET_TABLE_
08048c0c R _IO_stdin_used
w _Jv_RegisterClasses
0804a13c d __CTOR_END__
0804a138 d __CTOR_LIST__
0804a144 D __DTOR_END__
0804a140 d __DTOR_LIST__
08049134 r __FRAME_END__
0804a148 d __JCR_END__
0804a148 d __JCR_LIST__
0804a254 A __bss_start
0804a250 D __data_start
08048bc0 t __do_global_ctors_aux
080484c0 t __do_global_dtors_aux
08048c10 R __dso_handle
w __gmon_start__
08048b7a T __i686.get_pc_thunk.bx
0804a138 d __init_array_end
0804a138 d __init_array_start
08048b10 T __libc_csu_fini
08048b20 T __libc_csu_init
U __libc_start_main@@GLIBC_2.0
08048b80 T __stat
U __xstat@@GLIBC_2.0
0804a254 A _edata
0804a25c A _end
08048bec T _fini
08048c08 R _fp_hw
08048394 T _init
08048490 T _start
U close@@GLIBC_2.0
0804a254 b completed.5959
0804a250 W data_start
0804a258 b dtor_idx.5961
08048a9c T erreur
U exit@@GLIBC_2.0
08048520 t frame_dummy
08048a5e T howto
08048544 T main
U mmap@@GLIBC_2.0
U munmap@@GLIBC_2.0
U open@@GLIBC_2.0
U printf@@GLIBC_2.0
U puts@@GLIBC_2.0
08048b80 W stat
U strncmp@@GLIBC_2.0
donc, il n'y a aucune occurance entre les deux sorties, du coup je ne comprend ce que je liste, et que dois-je faire pour lister ce que je souhaite ?
PS : je ne m'interesse pas (encore) au adresse et au caractere donné par nm, juste les noms de symboles.
Partager