summaryrefslogtreecommitdiff
path: root/src/analysis/disass/fetch.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/disass/fetch.c')
-rw-r--r--src/analysis/disass/fetch.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/analysis/disass/fetch.c b/src/analysis/disass/fetch.c
index 2e9eb81..ffc653a 100644
--- a/src/analysis/disass/fetch.c
+++ b/src/analysis/disass/fetch.c
@@ -58,6 +58,8 @@ static void follow_execution_flow(const GLoadedBinary *binary, GProcContext *ctx
vmpa2t addr; /* Conversion en pleine adresse*/
mem_area *area; /* Zone de désassemblage */
+ printf("-- follow 0x%08x\n", (unsigned int)virt);
+
g_proc_context_push_drop_point(ctx, virt);
while (g_proc_context_has_drop_points(ctx))
@@ -65,10 +67,20 @@ static void follow_execution_flow(const GLoadedBinary *binary, GProcContext *ctx
virt = g_proc_context_pop_drop_point(ctx);
init_vmpa(&addr, VMPA_NO_PHYSICAL, virt);
+
+
+ printf(" ++ point 0x%08x\n", (unsigned int)virt);
+
+
area = find_memory_area_by_addr(areas, count, &addr);
load_code_from_mem_area(area, areas, count, binary, ctx, &addr, info);
+
+
+ printf(" ++\n");
+
+
}
}
@@ -128,6 +140,9 @@ GArchInstruction *disassemble_binary_content(const GLoadedBinary *binary, GtkExt
virt = g_binary_format_get_entry_point(format);
+ follow_execution_flow(binary, ctx, areas, count, info, 0x84c5);
+ follow_execution_flow(binary, ctx, areas, count, info, 0x8a65);
+
follow_execution_flow(binary, ctx, areas, count, info, virt);
/* Symboles exécutables présents et passés à travers les mailles */
@@ -147,6 +162,8 @@ GArchInstruction *disassemble_binary_content(const GLoadedBinary *binary, GtkExt
}
+ printf(" ------------------------------------------- follow done\n");
+
done = get_current_progessive_status(info);
fini_progessive_status(info);