diff options
Diffstat (limited to 'src/format')
-rw-r--r-- | src/format/elf/symbols.c | 7 | ||||
-rw-r--r-- | src/format/format-int.h | 2 | ||||
-rw-r--r-- | src/format/format.c | 19 | ||||
-rw-r--r-- | src/format/format.h | 3 |
4 files changed, 30 insertions, 1 deletions
diff --git a/src/format/elf/symbols.c b/src/format/elf/symbols.c index 30bdcca..d69e41a 100644 --- a/src/format/elf/symbols.c +++ b/src/format/elf/symbols.c @@ -141,10 +141,15 @@ bool load_elf_symbols(GElfFormat *format) result = load_elf_internal_symbols(format); #endif + + entry_point = ELF_HDR(format, format->header, e_entry); + G_BIN_FORMAT(format)->entry_point = entry_point; + + - printf("E_ENTRY : 0x%08lx\n", (unsigned long)entry_point); + printf("E_ENTRY : 0x%08lx\n", (unsigned long)entry_point); if (ELF_HDR(format, format->header, e_machine) == EM_ARM) entry_point &= ~0x1; diff --git a/src/format/format-int.h b/src/format/format-int.h index 95e171d..21a97b3 100644 --- a/src/format/format-int.h +++ b/src/format/format-int.h @@ -44,6 +44,8 @@ struct _GBinFormat const bin_t *content; /* Contenu binaire à étudier */ off_t length; /* Taille de ce contenu */ + virt_t entry_point; /* Point d'entrée dans le code */ + GBinSymbol **symbols; /* Liste des symboles trouvés */ size_t symbols_count; /* Quantité de ces symboles */ diff --git a/src/format/format.c b/src/format/format.c index cb43a94..8e1b9f4 100644 --- a/src/format/format.c +++ b/src/format/format.c @@ -180,6 +180,25 @@ const bin_t *g_binary_format_get_content(const GBinFormat *format, off_t *length /****************************************************************************** * * +* Paramètres : format = description de l'exécutable à consulter. * +* * +* Description : Fournit l'adresse mémoire du point d'entrée d'un binaire. * +* * +* Retour : Adresse de mémoire virtuelle, voire VMPA_NO_VIRTUAL. * +* * +* Remarques : - * +* * +******************************************************************************/ + +virt_t g_binary_format_get_entry_point(const GBinFormat *format) +{ + return format->entry_point; + +} + + +/****************************************************************************** +* * * Paramètres : format = informations chargées à compléter. * * symbol = symbole à ajouter à la liste. * * * diff --git a/src/format/format.h b/src/format/format.h index 3c74b50..364f71a 100644 --- a/src/format/format.h +++ b/src/format/format.h @@ -58,6 +58,9 @@ GType g_binary_format_get_type(void); /* Fournit une référence vers le contenu binaire analysé. */ const bin_t *g_binary_format_get_content(const GBinFormat *, off_t *); +/* Fournit l'adresse mémoire du point d'entrée d'un binaire. */ +virt_t g_binary_format_get_entry_point(const GBinFormat *); + /* Ajoute un symbole à la collection du format binaire. */ void g_binary_format_add_symbol(GBinFormat *, GBinSymbol *); |