args = parser.parse_args() return args if __name__ == '__main__': args = parse() try: (path, jars) = UF.get_engagement_app_jars(args.appname) UF.check_analysisdir(path) except UF.CHJError as e: print(str(e.wrap())) exit(1) app = AppAccess(path) cms = app.jd.get_cms(args.cmsix) cnix = cms.cnix msix = cms.msix (methodname, methodsig) = app.jd.mssignatures[msix] if not app.has_user_data_class(cnix): cn = app.jd.get_cn(cnix) package = cn.get_package_name() cname = cn.get_simple_name() newuserclass = UX.create_user_class_xnode(package, cname) UF.save_userdataclass_file(path, package, cname, newuserclass) userclass = app.get_user_data_class(cnix) if not userclass.has_method(msix):
action='store_true') args = parser.parse_args() return args if __name__ == '__main__': args = parse() try: (path, _) = UF.get_engagement_app_jars(args.appname) UF.check_analysisdir(path) except UF.CHJError as e: print(str(e.wrap())) exit(1) app = AppAccess(path) lines = [] if args.showstack or args.showtargets or args.showinvariants: bytecodereport = BRP.BytecodeReport(app, args.cmsix) lines.append( bytecodereport.to_string(showstack=args.showstack, showtargets=args.showtargets, showinvariants=args.showinvariants)) else: lines.append(str(app.get_method(args.cmsix))) if args.save: reportsdir = UF.get_engagement_reports_dir(path) if reportsdir is None: print('*' * 80)
if tgt.is_virtual_target() and tgt.get_length() > 1: return True else: return False if __name__ == '__main__': args = parse() try: (path, _) = UF.get_engagement_app_jars(args.appname) UF.check_analysisdir(path) except UF.CHJError as e: print(str(e.wrap())) exit(1) app = AppAccess(path) callgraph = app.get_callgraph() for cmsix in callgraph.edges: cmsedges = callgraph.edges[cmsix] cms = app.jd.get_cms(cmsix) if multiple(cmsedges) or (not args.multiple): print('\n' + str(cms) + ' (' + str(cmsix) + ')') for pc in sorted(cmsedges): tgt = cmsedges[pc] if (not args.multiple) or (tgt.is_virtual_target() and tgt.get_length() > 1): print(' ' + str(pc).rjust(4) + ': ' + str(cmsedges[pc]))
args = parser.parse_args() return args if __name__ == '__main__': args = parse() try: (path, _) = UF.get_engagement_app_jars(args.appname) UF.check_analysisdir(path) except UF.CHJError as e: print(str(e.wrap())) exit(1) app = AppAccess(path) lines = [] headername = args.appname lines.append( UP.reportheader('Named method calls to ' + args.name, headername)) results = [] def f(cmsix, m): results.append((cmsix, m.get_named_method_calls(args.name))) app.iter_methods(f) for (cmsix, mmethodcalls) in results: if len(mmethodcalls) > 0:
args = parser.parse_args() return args if __name__ == '__main__': args = parse() try: (path, _) = UF.get_engagement_app_jars(args.appname) UF.check_analysisdir(path) except UF.CHJError as e: print(str(e.wrap())) exit(1) app = AppAccess(path) recursionreport = Recursion(app) recursionstring = recursionreport.to_string() if args.save: reportsdir = UF.get_engagement_reports_dir(path) if reportsdir is None: print('*' * 80) print('Unable to create reports directory') print('*' * 80) exit(1) filename = os.path.join(reportsdir, 'cost_model_report.txt') with open(filename, 'w') as fp: fp.write(recursionstring) else:
args = parser.parse_args() return args if __name__ == '__main__': args = parse() try: (path, _) = UF.get_engagement_app_jars(args.appname) UF.check_analysisdir(path) except UF.CHJError as e: print(str(e.wrap())) exit(1) app = AppAccess(path) results = app.get_loaded_strings(substring=args.substring) lines = [] headername = args.appname lines.append(UP.reportheader('Loaded strings', headername)) print('-' * 80) for (cmsix, methodresults) in sorted(results): if len(methodresults) == 0: continue lines.append('\n' + str(app.jd.get_cms(cmsix).get_aqname())) for (pc, instr) in sorted(methodresults): lines.append((str(pc).rjust(4) + ' ' + str(instr))) if args.save: reportsdir = UF.get_engagement_reports_dir(path)