diff options
Diffstat (limited to 'src/analysis')
-rw-r--r-- | src/analysis/disass/area.c | 2 | ||||
-rw-r--r-- | src/analysis/disass/fetch.c | 2 | ||||
-rw-r--r-- | src/analysis/disass/output.c | 10 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/analysis/disass/area.c b/src/analysis/disass/area.c index 7e3a9a8..8340095 100644 --- a/src/analysis/disass/area.c +++ b/src/analysis/disass/area.c @@ -648,7 +648,7 @@ static void fill_mem_area(mem_area *area, mem_area *list, size_t count, const GL copy_vmpa(&start, get_mrange_addr(&area->range)); advance_vmpa(&start, i); - if (area->exec && get_virt_addr(&start) % 4 == 0) + if (area->exec && get_virt_addr(&start) % 2 == 0) { load_code_from_mem_area(area, list, count, binary, ctx, &start, info); diff --git a/src/analysis/disass/fetch.c b/src/analysis/disass/fetch.c index ffc653a..38ea8c0 100644 --- a/src/analysis/disass/fetch.c +++ b/src/analysis/disass/fetch.c @@ -140,6 +140,8 @@ GArchInstruction *disassemble_binary_content(const GLoadedBinary *binary, GtkExt virt = g_binary_format_get_entry_point(format); + follow_execution_flow(binary, ctx, areas, count, info, 0x84d0); + follow_execution_flow(binary, ctx, areas, count, info, 0x84c5); follow_execution_flow(binary, ctx, areas, count, info, 0x8a65); diff --git a/src/analysis/disass/output.c b/src/analysis/disass/output.c index eb53206..87d0407 100644 --- a/src/analysis/disass/output.c +++ b/src/analysis/disass/output.c @@ -177,6 +177,16 @@ void print_disassembled_instructions(GCodeBuffer *buffer, const GExeFormat *form iaddr = get_mrange_addr(g_arch_instruction_get_range(iter)); saddr = get_mrange_addr(g_binary_symbol_get_range(symbols[sym_index])); + + printf("OUTPUT [%zu] :: 0x%08x - 0x%08x :: 0x%08x - 0x%08x '%s'\n", + sym_index, + (unsigned int)get_phy_addr(iaddr), + (unsigned int)get_virt_addr(iaddr), + (unsigned int)get_phy_addr(saddr), + (unsigned int)get_virt_addr(saddr), + g_binary_symbol_to_string(symbols[sym_index])); + + if (cmp_vmpa_by_virt(iaddr, saddr) == 0) { /* Etiquette ? */ |