예제 #1
0
    def _get_edges(self, appname, taintsourceid):
        try:
            (path,_) = UF.get_engagement_app_jars(appname)
            UF.check_analysisdir(path)
            xtrail = UF.get_data_taint_trail_xnode(path,int(taintsourceid))
        except UF.CHJError as e:
            print(str(e.wrap()))
            return

        self.xnodes = xtrail.find('node-dictionary')
        self.xedges = xtrail.find('edges')

        self.nodes = [ int(n.get('ix')) for n in self.xnodes.findall('tn') ]
예제 #2
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()))
                        help='index of the method to be annotated',
                        type=int)
    parser.add_argument('interface', help='name of interface to be replaced')
    parser.add_argument('targetclass',
                        help='name of target class name for interface target')
    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()
예제 #4
0
def load_engagement_app(engagement, project):
    (path, jars) = UF.get_engagement_app_data(project)
    UF.check_analysisdir(path)
    app = AP.AppAccess(path)
    return app