diff options
| author | Cyrille Bagard <nocbos@gmail.com> | 2015-01-24 11:19:32 (GMT) | 
|---|---|---|
| committer | Cyrille Bagard <nocbos@gmail.com> | 2015-01-24 11:19:32 (GMT) | 
| commit | 141d2f0fbb2ce3b4ddf85383c55b891fd59dc598 (patch) | |
| tree | 085fa1a20d77f86825e1a6f4215b1ffd8fd961e8 /src/analysis/disass/fetch.c | |
| parent | 3df9f6dc8548b0562312036abfbfcf9850a81041 (diff) | |
Introduced conditional calls in instruction definition rules.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@459 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/analysis/disass/fetch.c')
| -rw-r--r-- | src/analysis/disass/fetch.c | 17 | 
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); | 
