summaryrefslogtreecommitdiff
path: root/src/analysis/disass/fetch.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2015-07-09 23:05:13 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2015-07-09 23:05:13 (GMT)
commit2be3bca7ff0f8ab40615fdbf72c149cd6439b0ac (patch)
tree0fc1bfc767eead1f33d41be737635d67b9ce5a84 /src/analysis/disass/fetch.c
parent66326b95195516864fc7721419250c4fef3f8f4b (diff)
Tried to use virtual addresses as often as possible.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@545 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/analysis/disass/fetch.c')
-rw-r--r--src/analysis/disass/fetch.c5
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);