def analyze_taint_propagation(appname, origin): try: UF.check_analyzer() (path, jars) = UF.get_engagement_app_jars(appname) UF.check_analysisdir(path) except UF.CHJError as e: print(str(e.wrap())) return pkg_excludes = UF.get_engagement_app_excludes(appname) dependencies = UF.get_engagement_app_dependencies(appname) am = AM.AnalysisManager(path, jars, dependencies=dependencies, excludes=pkg_excludes) try: am.create_taint_trail(origin, silent=True) app = reload_engagement_app(appname) return app except UF.CHJError as e: print(str(e.wrap()))
return args @contextmanager def timing(activity): t0 = time.time() yield print('\n' + ('=' * 80) + '\nCompleted ' + activity + ' in ' + str(time.time() - t0) + ' secs' + '\n' + ('=' * 80)) if __name__ == '__main__': args = parse() try: UF.check_analyzer() (path,jars) = UF.get_engagement_app_jars(args.appname) UF.remove_analysis_dir(path) except UF.CHJError as e: print(str(e.wrap())) exit(1) pkg_excludes = UF.get_engagement_app_excludes(args.appname) dependencies = UF.get_engagement_app_dependencies(args.appname) print('Analyzing: ' + args.appname + ' (' + path + ')') with timing('numerical analysis'): try: am = AM.AnalysisManager(path,jars,platform='ref_8.0_121', dependencies=dependencies,excludes=pkg_excludes)