1 19 20 26 27 package soot.jimple.toolkits.pointer.nativemethods; 28 29 import soot.*; 30 import soot.jimple.toolkits.pointer.representations.*; 31 import soot.jimple.toolkits.pointer.util.*; 32 33 public class JavaLangClassLoaderNative extends NativeMethodClass { 34 public JavaLangClassLoaderNative( NativeHelper helper ) { super(helper); } 35 36 41 public void simulateMethod(SootMethod method, 42 ReferenceVariable thisVar, 43 ReferenceVariable returnVar, 44 ReferenceVariable params[]){ 45 46 String subSignature = method.getSubSignature(); 47 48 if (subSignature.equals("java.lang.Class defineClass0(java.lang.String,byte[],int,int,java.lang.security.ProtectionDomain)")){ 49 java_lang_ClassLoader_defineClass0(method, thisVar, returnVar, params); 50 return; 51 52 } else if (subSignature.equals("java.lang.Class findBootstrapClass(java.lang.String)")){ 53 java_lang_ClassLoader_findBootstrapClass(method, thisVar, 54 returnVar, params); 55 return; 56 57 } else if (subSignature.equals("java.lang.Class findLoadedClass(java.lang.String)")){ 58 java_lang_ClassLoader_findLoadedClass(method, thisVar, 59 returnVar, params); 60 return; 61 62 } else if (subSignature.equals("java.lang.ClassLoader getCallerClassLoader()")){ 63 java_lang_ClassLoader_getCallerClassLoader(method, thisVar, 64 returnVar, params); 65 return; 66 67 } else { 68 defaultMethod(method, thisVar, returnVar, params); 69 return; 70 71 } 72 } 73 74 75 91 public 92 void java_lang_ClassLoader_defineClass0(SootMethod method, 93 ReferenceVariable thisVar, 94 ReferenceVariable returnVar, 95 ReferenceVariable params[]){ 96 helper.assignObjectTo(returnVar, Environment.v().getClassObject()); 97 } 98 99 108 public 109 void java_lang_ClassLoader_findBootstrapClass( 110 SootMethod method, 111 ReferenceVariable thisVar, 112 ReferenceVariable returnVar, 113 ReferenceVariable params[]) { 114 helper.assignObjectTo(returnVar, Environment.v().getClassObject()); 115 } 116 117 125 public 126 void java_lang_ClassLoader_findLoadedClass(SootMethod method, 127 ReferenceVariable thisVar, 128 ReferenceVariable returnVar, 129 ReferenceVariable params[]) { 130 helper.assignObjectTo(returnVar, Environment.v().getClassObject()); 131 } 132 133 138 public 139 void java_lang_ClassLoader_getCallerClassLoader( 140 SootMethod method, 141 ReferenceVariable thisVar, 142 ReferenceVariable returnVar, 143 ReferenceVariable params[]) { 144 helper.assignObjectTo(returnVar, Environment.v().getClassLoaderObject()); 145 } 146 147 155 } 156 | Popular Tags |