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') ]
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()
def load_engagement_app(engagement, project): (path, jars) = UF.get_engagement_app_data(project) UF.check_analysisdir(path) app = AP.AppAccess(path) return app