summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2017-08-15 18:35:49 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2017-08-15 18:35:49 (GMT)
commit852650d335f3366ad2c2416c5cebf56a569be691 (patch)
tree89bc51a560f481728c70716ab6fda29ab92c04e4 /src
parent436a69781ba7e0cd800da1a4d28b6f275963b751 (diff)
Found a location for disassembly prologues in all cases.
Diffstat (limited to 'src')
-rw-r--r--src/glibext/generators/prologue.c18
1 files changed, 17 insertions, 1 deletions
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);