diff options
Diffstat (limited to 'plugins/dalvik')
-rw-r--r-- | plugins/dalvik/context.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/plugins/dalvik/context.c b/plugins/dalvik/context.c index 752e831..70cbee5 100644 --- a/plugins/dalvik/context.c +++ b/plugins/dalvik/context.c @@ -664,14 +664,16 @@ static void g_dalvik_context_spread_allocated_shared_reg(GDalvikDContext *ctx, G { GDexFormat *format; /* Recherche de méthode */ GBinRoutine *routine; /* Objet des recherches */ + const mrange_t *range; /* Emplacement du symbole */ GDexMethod *method; /* Méthode décompilée */ uint16_t index; /* Identifiant du registre */ DexVariableIndex info; /* Nature du registre */ format = G_DEX_FORMAT(G_DEC_CONTEXT(ctx)->format); routine = G_DEC_CONTEXT(ctx)->routine; + range = g_binary_symbol_get_range(G_BIN_SYMBOL(routine)); - method = g_dex_format_find_method_by_address(format, g_binary_routine_get_address(routine)); + method = g_dex_format_find_method_by_address(format, get_mrange_addr(range)); index = g_dalvik_register_get_index(reg); info = g_dex_method_get_variable(method, index); @@ -703,6 +705,7 @@ static GDecInstruction *g_dalvik_dcontext_convert_register(GDalvikDContext *ctx, GDecInstruction *result; /* Instance à retourner */ GDexFormat *format; /* Recherche de méthode */ GBinRoutine *routine; /* Objet des recherches */ + const mrange_t *range; /* Emplacement du symbole */ GDexMethod *method; /* Méthode décompilée */ const GDalvikRegister *reg; /* Registre Dalvik représenté */ uint16_t index; /* Identifiant du registre */ @@ -712,8 +715,9 @@ static GDecInstruction *g_dalvik_dcontext_convert_register(GDalvikDContext *ctx, format = G_DEX_FORMAT(G_DEC_CONTEXT(ctx)->format); routine = G_DEC_CONTEXT(ctx)->routine; + range = g_binary_symbol_get_range(G_BIN_SYMBOL(routine)); - method = g_dex_format_find_method_by_address(format, g_binary_routine_get_address(routine)); + method = g_dex_format_find_method_by_address(format, get_mrange_addr(range)); reg = g_dalvik_register_operand_get(operand); |