diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-06-28 16:59:30 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-06-28 16:59:30 (GMT) |
commit | 398c8a5b054072a6d4ecdd5d2c2df356dddaf53a (patch) | |
tree | f5e6979fcb962f5399902907b14f0cae4404c713 /plugins/androhelpers | |
parent | a180a6b30713f38f58a9adc89d775fd142f19629 (diff) |
Replaced all calls to the old API dealing with routine location.
Diffstat (limited to 'plugins/androhelpers')
-rw-r--r-- | plugins/androhelpers/params.c | 6 | ||||
-rw-r--r-- | plugins/androhelpers/switch.c | 6 | ||||
-rw-r--r-- | plugins/androhelpers/try_n_catch.c | 17 |
3 files changed, 20 insertions, 9 deletions
diff --git a/plugins/androhelpers/params.c b/plugins/androhelpers/params.c index 26f4265..0c20c8d 100644 --- a/plugins/androhelpers/params.c +++ b/plugins/androhelpers/params.c @@ -131,6 +131,7 @@ static void process_args_operand(const GDexMethod *method, const GDalvikArgsOper static void visit_all_method_operands(const GDexMethod *method, GArchInstruction *instrs) { GBinRoutine *routine; /* Abstraction de la méthode */ + const mrange_t *range; /* Emplacement du symbole */ vmpa_t start; /* Début de la zone couverte */ vmpa_t end; /* Fin de la zone couverte */ GArchInstruction *iter; /* Boucle de parcours #1 */ @@ -139,9 +140,10 @@ static void visit_all_method_operands(const GDexMethod *method, GArchInstruction GArchOperand *operand; /* Operande à manipuler */ routine = g_dex_method_get_routine(method); + range = g_binary_symbol_get_range(G_BIN_SYMBOL(routine)); - start = g_binary_routine_get_address(routine); - end = start + g_binary_routine_get_size(routine); + start = get_mrange_addr(range)->virtual; + end = start + get_mrange_length(range); g_object_unref(G_OBJECT(routine)); diff --git a/plugins/androhelpers/switch.c b/plugins/androhelpers/switch.c index 2ef6277..57e3830 100644 --- a/plugins/androhelpers/switch.c +++ b/plugins/androhelpers/switch.c @@ -333,6 +333,7 @@ static void mark_all_switch_cases(const GArchInstruction *instr, const dex_switc static void look_for_switch_instructions(const GDexMethod *method, GArchInstruction *instrs, const GLoadedBinary *binary, const GDexFormat *format, bool link) { GBinRoutine *routine; /* Abstraction de la méthode */ + const mrange_t *range; /* Emplacement du symbole */ vmpa_t start; /* Début de la zone couverte */ vmpa_t end; /* Fin de la zone couverte */ GArchInstruction *iter; /* Boucle de parcours */ @@ -340,9 +341,10 @@ static void look_for_switch_instructions(const GDexMethod *method, GArchInstruct dex_switch dswitch; /* Infos d'aiguillage */ routine = g_dex_method_get_routine(method); + range = g_binary_symbol_get_range(G_BIN_SYMBOL(routine)); - start = g_binary_routine_get_address(routine); - end = start + g_binary_routine_get_size(routine); + start = get_mrange_addr(range)->virtual; + end = start + get_mrange_length(range); g_object_unref(G_OBJECT(routine)); diff --git a/plugins/androhelpers/try_n_catch.c b/plugins/androhelpers/try_n_catch.c index 1fa3971..811f8c5 100644 --- a/plugins/androhelpers/try_n_catch.c +++ b/plugins/androhelpers/try_n_catch.c @@ -80,13 +80,14 @@ static bool check_covered_area(const try_item *try, const GBinRoutine *routine) off_t length; /* Taille de la zone de code */ vmpa_t covered_start; /* Début de la zone couverte */ vmpa_t covered_end; /* Fin de la zone couverte */ - - length = g_binary_routine_get_size(routine); + const mrange_t *range; /* Emplacement du symbole */ covered_start = try->start_addr * sizeof(uint16_t); covered_end = covered_start + try->insn_count * sizeof(uint16_t); - return (covered_end <= length); + range = g_binary_symbol_get_range(G_BIN_SYMBOL(routine)); + + return (covered_end <= get_mrange_length(range)); } @@ -109,6 +110,7 @@ static bool check_covered_area(const try_item *try, const GBinRoutine *routine) static void attach_caught_code(const GLoadedBinary *binary, const GBinRoutine *routine, const try_item *try, const caught_exception *handlers, size_t count) { + const mrange_t *range; /* Emplacement du symbole */ vmpa_t start; /* Début de la zone couverte */ vmpa_t end; /* Fin de la zone couverte */ GArchProcessor *proc; /* Processeur de l'architecture*/ @@ -119,7 +121,9 @@ static void attach_caught_code(const GLoadedBinary *binary, const GBinRoutine *r GArchInstruction *iter; /* Boucle de parcours #1 */ size_t i; /* Boucle de parcours #2 */ - start = g_binary_routine_get_address(routine); + range = g_binary_symbol_get_range(G_BIN_SYMBOL(routine)); + + start = get_mrange_addr(range)->virtual; start += try->start_addr * sizeof(uint16_t); end = start + try->insn_count * sizeof(uint16_t); @@ -236,6 +240,7 @@ static void mark_exception_handlers(const GLoadedBinary *binary, uleb128_t size, static caught_exception **build_all_destinations_list(const GLoadedBinary *binary, const GBinRoutine *routine, const encoded_catch_handler_list *hlist, size_t **count) { + const mrange_t *range; /* Emplacement du symbole */ caught_exception **result; /* Liste de listes à retourner */ vmpa_t start; /* Début du code de la routine */ GDexFormat *format; /* Format du binaire chargé */ @@ -248,7 +253,9 @@ static caught_exception **build_all_destinations_list(const GLoadedBinary *binar caught_exception *excep; /* Raccourci confortable */ GDataType *type; /* Type de l'exception */ - start = g_binary_routine_get_address(routine); + range = g_binary_symbol_get_range(G_BIN_SYMBOL(routine)); + + start = get_mrange_addr(range)->virtual; format = G_DEX_FORMAT(g_loaded_binary_get_format(binary)); |