diff options
Diffstat (limited to 'src/analysis/disass/fetch.c')
-rw-r--r-- | src/analysis/disass/fetch.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/analysis/disass/fetch.c b/src/analysis/disass/fetch.c index 16b81c8..b30d5a6 100644 --- a/src/analysis/disass/fetch.c +++ b/src/analysis/disass/fetch.c @@ -63,6 +63,7 @@ static void ensure_all_mem_areas_are_filled(mem_area **, size_t *, const GLoaded static void follow_execution_flow(const GLoadedBinary *binary, GProcContext *ctx, mem_area **areas, size_t *count, status_blob_info *info, virt_t virt) { vmpa2t addr; /* Conversion en pleine adresse*/ + GExeFormat *format; /* Format du fichier binaire */ size_t index; /* Zone trouvée à traiter */ printf("-- follow 0x%08x\n", (unsigned int)virt); @@ -73,9 +74,11 @@ static void follow_execution_flow(const GLoadedBinary *binary, GProcContext *ctx while (g_proc_context_has_drop_points(ctx)) { virt = g_proc_context_pop_drop_point(ctx); - init_vmpa(&addr, VMPA_NO_PHYSICAL, virt); + format = g_loaded_binary_get_format(binary); + if (!g_exe_format_translate_address_into_vmpa(format, virt, &addr)) + init_vmpa(&addr, VMPA_NO_PHYSICAL, virt); printf(" ++ point 0x%08x\n", (unsigned int)virt); |