2013-04-19 3 views
0

Я хочу отслеживать все объекты Intent, но я не могу найти API.Как отслеживать локальную переменную Androguard

Я хочу знать, где компонент запускает другой в приложении. Также я хочу знать, как это происходит, например, если Intent является явным намерением или имеет данные.

Например, действие можно запустить с помощью метода startActivity (Intent i), я хочу знать подробную информацию о «i». Поэтому мне нужно найти его.

Может ли кто-нибудь помочь?

Большое спасибо!

ответ

1
#!/usr/bin/env python 

import sys,string 
from androguard.core.bytecodes.dvm import DalvikVMFormat 
from androguard.core.bytecodes.apk import APK 
from androguard.core.analysis.analysis import uVMAnalysis 
from androguard.core.analysis.ganalysis import GVMAnalysis 

def join_names(items): 
    arr = [] 
    for item in items: 
     arr.append(item[0].class_name+"->"+item[0].name) 
    return string.join(arr, ", ") 

if len(sys.argv) > 2: 
    filename = sys.argv[1] 
    method_name = sys.argv[2] 
    d = DalvikVMFormat(APK(filename, False).get_dex()) 
    d.create_python_export() 
    dx = uVMAnalysis(d) 
    gx = GVMAnalysis(dx, None) 
    d.set_vmanalysis(dx) 
    d.set_gvmanalysis(gx) 
    d.create_xref() 
    for m in d.get_methods(): 
     if m.name == method_name: 
      print (m.class_name + "->" + m.name + " ----------------- XREFfrom: [" + join_names(m.XREFfrom.items) + "] XREFto: [" + join_names(m.XREFto.items) + "]") 

Выполнить это примерно так:

Android @ приманка: ~/инструменты/androguard $ ./xref.py your_apk.apk startActivity

Смежные вопросы