sto cercando di ottenere l'offset al nome della sezione accedendo alla membro di un file elfo corretto, ma mantenere avermi dato pari a zero, o null ...ricevendo il membro sh_name in un'intestazione sezione del file elf
dovrei usare solo mmap()
ei elf.h
- non funziona helper
Così ho fatto:
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);
ma quando lo faccio:
printf("name offset = %d\n", (section->sh_name));
continua a darmi 0 ... cosa sto facendo di sbagliato?
so che si suppone sia un offset, ma non si supponga di stampare l'offset come int quando inserisco in printf? come posso stampare il valore - in qualunque modo sia rappresentato? Inoltre, come ottengo il nome effettivo - so di avere l'offset nella sezione specifica in .shstrtab - ma di stampare il nome? Voglio dire, come faccio a fare riferimento alla tabella delle stringhe? ho provato a fare qualcosa come printf ("% s", sction + header.shstrtab [nameoffset]); ma questo non ha funzionato per me ... – user1431301
@ user1431301 Vedere l'aggiornamento. –
@EmployedRussian: Puoi dare un esempio su come eseguire il contrario, un esempio di codice su come creare la tabella di stringhe e quindi la sezione con alcuni valori? –