private Class getClass(String className) { Class[] loadedClasses = JavaAgent.getInstrumentation().getAllLoadedClasses(); for (Class c : loadedClasses) { if (c.getName().equals(className)) { return c; } } return null; } @RequestHandler(RequestCmd.OBJECT_CHECK_RESOURCE_FILE)
private Class getClass(String className) { Class[] loadedClasses = JavaAgent.getInstrumentation().getAllLoadedClasses(); for (Class c : loadedClasses) { if (c.getName().equals(className)) { return c; } } return null; } @RequestHandler(RequestCmd.OBJECT_CHECK_RESOURCE_FILE)
public static ClassLoader appendToSystemOrBootLoader(String key) { if (JavaAgent.isJava9plus()) { appendToSystemLoader(JavaAgent.getInstrumentation(), key); return ClassLoader.getSystemClassLoader(); } else { appendToBootLoader(JavaAgent.getInstrumentation(), key); return null; } }
public static ClassLoader appendToSystemOrBootLoader(String key) { if (JavaAgent.isJava9plus()) { appendToSystemLoader(JavaAgent.getInstrumentation(), key); return ClassLoader.getSystemClassLoader(); } else { appendToBootLoader(JavaAgent.getInstrumentation(), key); return null; } }
public static Object invokeStaticMethod(String className, String methodName) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException { Integer tryCount = tryCountMap.get(className); if (tryCount != null && tryCount.intValue() > 20) return null; Method m = (Method) reflCache.get(className); if (m == null) { Class[] loadedClasses = JavaAgent.getInstrumentation().getAllLoadedClasses(); for (Class c : loadedClasses) { if (c.getName().equals(className)) { m = c.getMethod(methodName); reflCache.put(className, m); tryCountMap.remove(className); break; } } } if (m == null) { tryCountMap.put(className, new Integer(tryCount.intValue() + 1)); return null; } return m.invoke(null, new Object[]{}); }
public static Object invokeStaticMethod(String className, String methodName) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException { Integer tryCount = tryCountMap.get(className); if (tryCount != null && tryCount.intValue() > 20) return null; Method m = (Method) reflCache.get(className); if (m == null) { Class[] loadedClasses = JavaAgent.getInstrumentation().getAllLoadedClasses(); for (Class c : loadedClasses) { if (c.getName().equals(className)) { m = c.getMethod(methodName); reflCache.put(className, m); tryCountMap.remove(className); break; } } } if (m == null) { tryCountMap.put(className, new Integer(tryCount.intValue() + 1)); return null; } return m.invoke(null, new Object[]{}); }
private void hooking(Hook m) { // Never use dynamic hooking on AIX with JDK1.5 if (SystemUtil.IS_AIX && SystemUtil.IS_JAVA_1_5) { return; } try { Class cls = Class.forName(m.classname, false, m.loader); ClassDefinition[] cd = new ClassDefinition[1]; cd[0] = new ClassDefinition(cls, m.body); JavaAgent.getInstrumentation().redefineClasses(cd); } catch (Throwable t) { Logger.println("A149", "async hook fail:" + m.classname + " " + t); } } }
private void hooking(Hook m) { // Never use dynamic hooking on AIX with JDK1.5 if (SystemUtil.IS_AIX && SystemUtil.IS_JAVA_1_5) { return; } try { Class cls = Class.forName(m.classname, false, m.loader); ClassDefinition[] cd = new ClassDefinition[1]; cd[0] = new ClassDefinition(cls, m.body); JavaAgent.getInstrumentation().redefineClasses(cd); } catch (Throwable t) { Logger.println("A149", "async hook fail:" + m.classname + " " + t); } } }
private void redefine(StringSet clazzes) { Class[] loadedClasses = JavaAgent.getInstrumentation().getAllLoadedClasses(); ArrayList<ClassDefinition> definitionList = new ArrayList<ClassDefinition>(); boolean allSuccess = true; for (int i = 0; i < loadedClasses.length; i++) { if (clazzes.hasKey(loadedClasses[i].getName())) { try { byte[] buff = ClassUtil.getByteCode(loadedClasses[i]); if (buff == null) { continue; } definitionList.add(new ClassDefinition(loadedClasses[i], buff)); } catch (Exception e) { allSuccess = false; break; } } } if (definitionList.size() > 0 && allSuccess) { try { JavaAgent.getInstrumentation().redefineClasses(definitionList.toArray(new ClassDefinition[definitionList.size()])); } catch (Throwable th) { Logger.println("A183", "redefine error : " + loadedClasses); } } }
private void redefine(StringSet clazzes) { Class[] loadedClasses = JavaAgent.getInstrumentation().getAllLoadedClasses(); ArrayList<ClassDefinition> definitionList = new ArrayList<ClassDefinition>(); boolean allSuccess = true; for (int i = 0; i < loadedClasses.length; i++) { if (clazzes.hasKey(loadedClasses[i].getName())) { try { byte[] buff = ClassUtil.getByteCode(loadedClasses[i]); if (buff == null) { continue; } definitionList.add(new ClassDefinition(loadedClasses[i], buff)); } catch (Exception e) { allSuccess = false; break; } } } if (definitionList.size() > 0 && allSuccess) { try { JavaAgent.getInstrumentation().redefineClasses(definitionList.toArray(new ClassDefinition[definitionList.size()])); } catch (Throwable th) { Logger.println("A183", "redefine error : " + loadedClasses); } } }
paramSet.add(className); Class[] classes = JavaAgent.getInstrumentation().getAllLoadedClasses(); JavaAgent.getInstrumentation().redefineClasses(definitionList.toArray(new ClassDefinition[definitionList.size()])); p.put("success", new BooleanValue(true)); } catch (Throwable th) {
paramSet.add(className); Class[] classes = JavaAgent.getInstrumentation().getAllLoadedClasses(); JavaAgent.getInstrumentation().redefineClasses(definitionList.toArray(new ClassDefinition[definitionList.size()])); p.put("success", new BooleanValue(true)); } catch (Throwable th) {
p.put("totalPage", 0); Class[] loadedClasses = JavaAgent.getInstrumentation().getAllLoadedClasses(); if (loadedClasses != null) { List<Class> classList = new ArrayList<Class>();
p.put("totalPage", 0); Class[] loadedClasses = JavaAgent.getInstrumentation().getAllLoadedClasses(); if (loadedClasses != null) { List<Class> classList = new ArrayList<Class>();
private Class getClass(String className) { Class[] loadedClasses = JavaAgent.getInstrumentation().getAllLoadedClasses(); for (Class c : loadedClasses) { if (c.getName().equals(className)) { return c; } } return null; } @RequestHandler(RequestCmd.OBJECT_CHECK_RESOURCE_FILE)
public static ClassLoader appendToSystemOrBootLoader(String key) { if (JavaAgent.isJava9plus()) { appendToSystemLoader(JavaAgent.getInstrumentation(), key); return ClassLoader.getSystemClassLoader(); } else { appendToBootLoader(JavaAgent.getInstrumentation(), key); return null; } }
public static Object invokeStaticMethod(String className, String methodName) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException { Integer tryCount = tryCountMap.get(className); if (tryCount != null && tryCount.intValue() > 20) return null; Method m = (Method) reflCache.get(className); if (m == null) { Class[] loadedClasses = JavaAgent.getInstrumentation().getAllLoadedClasses(); for (Class c : loadedClasses) { if (c.getName().equals(className)) { m = c.getMethod(methodName); reflCache.put(className, m); tryCountMap.remove(className); break; } } } if (m == null) { tryCountMap.put(className, new Integer(tryCount.intValue() + 1)); return null; } return m.invoke(null, new Object[]{}); }
private void hooking(Hook m) { // Never use dynamic hooking on AIX with JDK1.5 if (SystemUtil.IS_AIX && SystemUtil.IS_JAVA_1_5) { return; } try { Class cls = Class.forName(m.classname, false, m.loader); ClassDefinition[] cd = new ClassDefinition[1]; cd[0] = new ClassDefinition(cls, m.body); JavaAgent.getInstrumentation().redefineClasses(cd); } catch (Throwable t) { Logger.println("A149", "async hook fail:" + m.classname + " " + t); } } }
private void redefine(StringSet clazzes) { Class[] loadedClasses = JavaAgent.getInstrumentation().getAllLoadedClasses(); ArrayList<ClassDefinition> definitionList = new ArrayList<ClassDefinition>(); boolean allSuccess = true; for (int i = 0; i < loadedClasses.length; i++) { if (clazzes.hasKey(loadedClasses[i].getName())) { try { byte[] buff = ClassUtil.getByteCode(loadedClasses[i]); if (buff == null) { continue; } definitionList.add(new ClassDefinition(loadedClasses[i], buff)); } catch (Exception e) { allSuccess = false; break; } } } if (definitionList.size() > 0 && allSuccess) { try { JavaAgent.getInstrumentation().redefineClasses(definitionList.toArray(new ClassDefinition[definitionList.size()])); } catch (Throwable th) { Logger.println("A183", "redefine error : " + loadedClasses); } } }
paramSet.add(className); Class[] classes = JavaAgent.getInstrumentation().getAllLoadedClasses(); JavaAgent.getInstrumentation().redefineClasses(definitionList.toArray(new ClassDefinition[definitionList.size()])); p.put("success", new BooleanValue(true)); } catch (Throwable th) {