Source code for androlyze.model.script.impl.ASTifyMethodsText


# encoding: utf-8

__author__ = "Nils Tobias Schmidt"
__email__ = "schmidt89 at informatik.uni-marburg.de"

from pprint import pformat

from androlyze.log.Log import log
from androlyze.model.script.AndroScript import AndroScript
from androlyze.model.script.util import AnaUtil


[docs]class ASTifyMethodsText(AndroScript): ''' Get the AST (abstract syntax tree) for each method. ''' VERSION = "0.3" def _analyze(self, apk, dalvik_vm_format, vm_analysis, gvm_analysis, *args, **kwargs): # CFG for encoded_method in dalvik_vm_format.get_methods(): try: method_analysis = vm_analysis.get_method(encoded_method) if encoded_method.get_code() == None: continue classname = encoded_method.get_class_name() # skip android classes due to mongo db document limit if classname.find("Landroid") != -1: continue ast = None if method_analysis is not None: ast = AnaUtil.ast_for_method_analysis(method_analysis) if ast is not None: self.cres += '%s\n\n' % pformat(ast) except Exception as e: log.exception(e)
[docs] def custom_result_object(self): return ("", "json")
############################################################ #---Options ############################################################
[docs] def needs_dalvik_vm_format(self): return True
[docs] def needs_vmanalysis(self): return True