private void handleInit(SootMethod source, final SootClass scl) { addEdge(source, null, scl, sigFinalize, Kind.FINALIZE); }
private void addEdge(SootMethod src, Stmt stmt, SootClass cls, NumberedString methodSubSig, Kind kind) { SootMethod sm = cls.getMethodUnsafe(methodSubSig); if (sm != null) { addEdge(src, stmt, sm, kind); } }
private void addEdge(SootMethod src, Stmt stmt, SootMethod tgt) { InvokeExpr ie = stmt.getInvokeExpr(); addEdge(src, stmt, tgt, Edge.ieToKind(ie)); }
private void constantForName(String cls, SootMethod src, Stmt srcUnit) { if (cls.length() > 0 && cls.charAt(0) == '[') { if (cls.length() > 1 && cls.charAt(1) == 'L' && cls.charAt(cls.length() - 1) == ';') { cls = cls.substring(2, cls.length() - 1); constantForName(cls, src, srcUnit); } } else { if (!Scene.v().containsClass(cls)) { if (options.verbose()) { logger.warn("Class " + cls + " is" + " a dynamic class, and you did not specify" + " it as such; graph will be incomplete!"); } } else { SootClass sootcls = Scene.v().getSootClass(cls); if (!sootcls.isPhantomClass()) { if (!sootcls.isApplicationClass()) { sootcls.setLibraryClass(); } for (SootMethod clinit : EntryPoints.v().clinitsOf(sootcls)) { addEdge(src, srcUnit, clinit, Kind.CLINIT); } } } } }
SootMethod tgt = ie.getMethod(); if (tgt != null) { addEdge(m, s, tgt); String signature = tgt.getSignature(); if (signature
SootClass cl = ie.getMethodRef().declaringClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge(source, s, clinit, Kind.CLINIT); SootClass cl = fr.getFieldRef().declaringClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge(source, s, clinit, Kind.CLINIT); SootClass cl = r.getBaseType().getSootClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge(source, s, clinit, Kind.CLINIT); SootClass cl = ((RefType) t).getSootClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge(source, s, clinit, Kind.CLINIT);
private void handleInit(SootMethod source, final SootClass scl) { addEdge( source, null, scl, sigFinalize, Kind.FINALIZE ); } private void constantForName( String cls, SootMethod src, Stmt srcUnit ) {
private void handleInit(SootMethod source, final SootClass scl) { addEdge( source, null, scl, sigFinalize, Kind.FINALIZE ); } private void constantForName( String cls, SootMethod src, Stmt srcUnit ) {
private void addEdge( SootMethod src, Stmt stmt, SootClass cls, NumberedString methodSubSig, Kind kind ) { if( cls.declaresMethod( methodSubSig ) ) { addEdge( src, stmt, cls.getMethod( methodSubSig ), kind ); } } private void addEdge( SootMethod src, Stmt stmt, SootMethod tgt ) {
private void addEdge( SootMethod src, Stmt stmt, SootClass cls, NumberedString methodSubSig, Kind kind ) { if( cls.declaresMethod( methodSubSig ) ) { addEdge( src, stmt, cls.getMethod( methodSubSig ), kind ); } } private void addEdge( SootMethod src, Stmt stmt, SootMethod tgt ) {
private void addEdge( SootMethod src, Stmt stmt, SootMethod tgt ) { InvokeExpr ie = stmt.getInvokeExpr(); addEdge( src, stmt, tgt, Edge.ieToKind(ie) ); }
private void addEdge( SootMethod src, Stmt stmt, SootMethod tgt ) { InvokeExpr ie = stmt.getInvokeExpr(); addEdge( src, stmt, tgt, Edge.ieToKind(ie) ); }
private void constantForName( String cls, SootMethod src, Stmt srcUnit ) { if( cls.length() > 0 && cls.charAt(0) == '[' ) { if( cls.length() > 1 && cls.charAt(1) == 'L' && cls.charAt(cls.length()-1) == ';' ) { cls = cls.substring(2,cls.length()-1); constantForName( cls, src, srcUnit ); } } else { if( !Scene.v().containsClass( cls ) ) { if( options.verbose() ) { G.v().out.println( "Warning: Class "+cls+" is"+ " a dynamic class, and you did not specify"+ " it as such; graph will be incomplete!" ); } } else { SootClass sootcls = Scene.v().getSootClass( cls ); if( !sootcls.isApplicationClass() ) { sootcls.setLibraryClass(); } for (SootMethod clinit : EntryPoints.v().clinitsOf(sootcls)) { addEdge( src, srcUnit, clinit, Kind.CLINIT ); } } } }
private void constantForName( String cls, SootMethod src, Stmt srcUnit ) { if( cls.length() > 0 && cls.charAt(0) == '[' ) { if( cls.length() > 1 && cls.charAt(1) == 'L' && cls.charAt(cls.length()-1) == ';' ) { cls = cls.substring(2,cls.length()-1); constantForName( cls, src, srcUnit ); } } else { if( !Scene.v().containsClass( cls ) ) { if( options.verbose() ) { G.v().out.println( "Warning: Class "+cls+" is"+ " a dynamic class, and you did not specify"+ " it as such; graph will be incomplete!" ); } } else { SootClass sootcls = Scene.v().getSootClass( cls ); if( !sootcls.isApplicationClass() ) { sootcls.setLibraryClass(); } for (SootMethod clinit : EntryPoints.v().clinitsOf(sootcls)) { addEdge( src, srcUnit, clinit, Kind.CLINIT ); } } } }
addEdge(m, s, tgt); if( tgt.getSignature().equals( "<java.security.AccessController: java.lang.Object doPrivileged(java.security.PrivilegedAction)>" ) || tgt.getSignature().equals( "<java.security.AccessController: java.lang.Object doPrivileged(java.security.PrivilegedExceptionAction)>" )
addEdge(m, s, tgt); if( tgt.getSignature().equals( "<java.security.AccessController: java.lang.Object doPrivileged(java.security.PrivilegedAction)>" ) || tgt.getSignature().equals( "<java.security.AccessController: java.lang.Object doPrivileged(java.security.PrivilegedExceptionAction)>" )
SootClass cl = ie.getMethodRef().declaringClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge( source, s, clinit, Kind.CLINIT ); SootClass cl = fr.getFieldRef().declaringClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge( source, s, clinit, Kind.CLINIT ); SootClass cl = r.getBaseType().getSootClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge( source, s, clinit, Kind.CLINIT ); SootClass cl = ((RefType) t).getSootClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge( source, s, clinit, Kind.CLINIT );
SootClass cl = ie.getMethodRef().declaringClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge( source, s, clinit, Kind.CLINIT ); SootClass cl = fr.getFieldRef().declaringClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge( source, s, clinit, Kind.CLINIT ); SootClass cl = r.getBaseType().getSootClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge( source, s, clinit, Kind.CLINIT ); SootClass cl = ((RefType) t).getSootClass(); for (SootMethod clinit : EntryPoints.v().clinitsOf(cl)) { addEdge( source, s, clinit, Kind.CLINIT );