From 852650d335f3366ad2c2416c5cebf56a569be691 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
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 <nocbos@gmail.com>
+
+	* src/glibext/generators/prologue.c:
+	Find a location for disassembly prologues in all cases.
+
 17-08-13  Cyrille Bagard <nocbos@gmail.com>
 
 	* 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