From 040904901f919932738cd50878ca2d4ca8ba43f9 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Mon, 23 Jul 2018 14:07:46 +0200
Subject: Jumped from Dalvik pool method operands.

---
 plugins/dalvik/operands/pool.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/plugins/dalvik/operands/pool.c b/plugins/dalvik/operands/pool.c
index f4fe1fa..d913149 100644
--- a/plugins/dalvik/operands/pool.c
+++ b/plugins/dalvik/operands/pool.c
@@ -606,12 +606,32 @@ static bool g_dalvik_pool_operand_serialize(const GDalvikPoolOperand *operand, G
 static bool g_dalvik_pool_operand_get_addr(const GDalvikPoolOperand *operand, const vmpa2t *src, GBinFormat *format, GArchProcessor *proc, vmpa2t *addr)
 {
     bool result;                            /* Bilan à retourner           */
+    GDexMethod *method;                     /* Méthode ciblée ici          */
+    GBinRoutine *routine;                   /* Routine liée à la méthode   */
+    const mrange_t *range;                  /* Zone d'occupation           */
 
     result = false;
 
     if (operand->type == DPT_METHOD)
     {
-        result = false;
+        method = get_method_from_dex_pool(G_DEX_FORMAT(format), operand->index);
+
+        if (method != NULL)
+        {
+            routine = g_dex_method_get_routine(method);
+            range = g_binary_symbol_get_range(G_BIN_SYMBOL(routine));
+
+            if (range->addr.physical > 0)
+            {
+                copy_vmpa(addr, get_mrange_addr(range));
+                result = true;
+            }
+
+            g_object_unref(G_OBJECT(routine));
+            g_object_unref(G_OBJECT(method));
+
+        }
+
     }
 
     return result;
-- 
cgit v0.11.2-87-g4458