2017-06-26 3 views
1

J'apprends actuellement comment désassembler les fichiers binaires Mach-O et j'essaie de comprendre comment comprendre une 'Table des symboles' (dans le fichier cmd LC_SYMTAB).Comment comprendre le tableau des symboles Mach-O

Comment lire/interpréter une table de symboles et ses entrées? Je ne suis pas 100% de ceci mais il semble que les entrées sont 8 octets chacun? (corrigez-moi si je me trompe)

Je sais qu'une table de chaînes est un groupe de chaînes séparées par des octets nuls, mais qu'est-ce qu'une table de symboles et son but?

Merci.

Répondre

1

Droit de <mach-o/nlist.h>:

struct nlist { 
    union { 
     uint32_t n_strx; /* index into the string table */ 
    } n_un; 
    uint8_t n_type;   /* type flag, see below */ 
    uint8_t n_sect;   /* section number or NO_SECT */ 
    int16_t n_desc;   /* see <mach-o/stab.h> */ 
    uint32_t n_value;  /* value of this symbol (or stab offset) */ 
}; 

struct nlist_64 { 
    union { 
     uint32_t n_strx; /* index into the string table */ 
    } n_un; 
    uint8_t n_type;   /* type flag, see below */ 
    uint8_t n_sect;   /* section number or NO_SECT */ 
    uint16_t n_desc;  /* see <mach-o/stab.h> */ 
    uint64_t n_value;  /* value of this symbol (or stab offset) */ 
}; 

Donc non, cela ne devrait pas être de 8 octets, mais plutôt 12 octets pour 32 bits et 16 octets pour les binaires 64 bits.