Example #1
0
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)