From 852650d335f3366ad2c2416c5cebf56a569be691 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Tue, 15 Aug 2017 20:35:49 +0200 Subject: Found a location for disassembly prologues in all cases. --- ChangeLog | 5 +++++ src/glibext/generators/prologue.c | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index be9e546..0811005 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +17-08-15 Cyrille Bagard + + * src/glibext/generators/prologue.c: + Find a location for disassembly prologues in all cases. + 17-08-13 Cyrille Bagard * src/glibext/gbufferview.c: diff --git a/src/glibext/generators/prologue.c b/src/glibext/generators/prologue.c index 03db327..00259d0 100644 --- a/src/glibext/generators/prologue.c +++ b/src/glibext/generators/prologue.c @@ -225,7 +225,23 @@ GIntroGenerator *g_intro_generator_new(const GBinFormat *format, const GCodingLa vmpa2t first; /* Première position */ if (!g_exe_format_translate_offset_into_vmpa(G_EXE_FORMAT(format), 0, &first)) - return NULL; + { + /** + * Dans les faits, le premier octet d'en-tête est toujours chargé en mémoire + * (du moins chez les ELF). + * + * Cependant, il s'agit plus d'une facilité que d'une contrainte. Donc rien + * n'empêcherait la position 0 de ne pas avoir de correspondance en mémoire + * virtuelle. + * + * Dans tous les cas, la mise en place d'un prologue est attendue, et on ne + * peut donc pas échouer ici, que la correspondance existe ou non. On fait + * ainsi avec le peu qu'on sait. + */ + + init_vmpa(&first, 0, VMPA_NO_VIRTUAL); + + } result = g_object_new(G_TYPE_INTRO_GENERATOR, NULL); -- cgit v0.11.2-87-g4458