diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2020-02-18 23:28:46 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2020-02-18 23:28:46 (GMT) |
commit | 89f9d10299e5ae520e2652b03abced1cdedca064 (patch) | |
tree | 502dd931f44a64301de464918aca8e7c914eb21c /plugins/elf | |
parent | d6b2e6639698674cbdaf7dc2e5f5a637abcfadb0 (diff) |
Discarded the "@plt" suffix for Elf external functions.
Diffstat (limited to 'plugins/elf')
-rw-r--r-- | plugins/elf/loading.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/plugins/elf/loading.c b/plugins/elf/loading.c index bf79f13..181c864 100644 --- a/plugins/elf/loading.c +++ b/plugins/elf/loading.c @@ -720,7 +720,6 @@ GBinSymbol *g_elf_loading_build_plt_symbol(const GElfLoading *loading, uint64_t const GBinContent *content; /* Contenu binaire à lire */ const char *raw_label; /* Première partie de nom */ GBinRoutine *routine; /* Routine à mettre en place */ - char *new_label; /* Nouvelle étiquette */ format = loading->format; @@ -751,12 +750,21 @@ GBinSymbol *g_elf_loading_build_plt_symbol(const GElfLoading *loading, uint64_t { routine = g_binary_format_decode_routine(base, raw_label); - raw_label = g_binary_routine_get_name(routine); - - new_label = strdup(raw_label); - new_label = stradd(new_label, "@plt"); - - g_binary_routine_set_name(routine, new_label); + /** + * L'ajout d'un suffixe "@plt" artificiel est ici supprimé. + * + * Si un tel ajout est facile sur des fonctions C classiques + * (via un appel à g_binary_routine_get_name(), une modification du résultat + * obtenu puis une mise à jour avec g_binary_routine_set_name()) le traitement + * des fonctions C++ s'avère plus laborieux. + * + * Par exemple, cerner le nom d'une fonction comportant des patrons requiert + * des opérations pour la mise à jour de ce nom ; et charge à l'utilisateur + * de procéder à un traitement tout aussi complexe s'il souhaite retrouver + * le nom d'origine, sans facilité apportée par Chrysalide. + * + * On garde en référence à ce titre la fonction _ZN6google8protobuf8internal20RepeatedPtrFieldBase5ClearINS0_16RepeatedPtrFieldIN8pittpatt5proto14DetectedObjectEE11TypeHandlerEEEvv. + */ result = G_BIN_SYMBOL(routine); |