diff --git a/src/main/java/com/novitechie/ClassTransformer.java b/src/main/java/com/novitechie/ClassTransformer.java deleted file mode 100644 index d0e566e..0000000 --- a/src/main/java/com/novitechie/ClassTransformer.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.novitechie; - -import com.janetfilter.core.plugin.MyTransformer; -import jdk.internal.org.objectweb.asm.ClassReader; -import jdk.internal.org.objectweb.asm.ClassWriter; -import jdk.internal.org.objectweb.asm.tree.*; - -import static jdk.internal.org.objectweb.asm.Opcodes.*; - -/** - * @author YeloChick - */ -public class ClassTransformer implements MyTransformer { - - @Override - public String getHookClassName() { - return "java.lang.Class"; - } - - @Override - public byte[] transform(String className, byte[] classBytes, int order) throws Exception { - ClassReader reader = new ClassReader(classBytes); - ClassNode node = new ClassNode(ASM5); - reader.accept(node, 0); - for (MethodNode m : node.methods) { - if ("forName".equals(m.name)) { - InsnList list = new InsnList(); - list.add(new VarInsnNode(ALOAD, 0)); - list.add(new MethodInsnNode(INVOKESTATIC, "com/novitechie/LoadClassRule", "check", "(Ljava/lang/String;)V", false)); - m.instructions.insert(list); - } - } - ClassWriter writer = new SafeClassWriter(null, null, ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS); - node.accept(writer); - return writer.toByteArray(); - } -} diff --git a/src/main/java/com/novitechie/LoadClassRule.java b/src/main/java/com/novitechie/LoadClassRule.java index 4cbbd62..d17391a 100644 --- a/src/main/java/com/novitechie/LoadClassRule.java +++ b/src/main/java/com/novitechie/LoadClassRule.java @@ -1,14 +1,22 @@ package com.novitechie; +import java.util.ArrayList; +import java.util.List; + public class LoadClassRule { + + private static final List PREVENT_LOAD_PACKAGES = new ArrayList() { + { + add("com.novitechie"); + add("com.janetfilter"); + add("jdk.internal.org.objectweb.asm"); + } + }; + public static void check(String name) throws Exception { - if (name.startsWith("com.janetfilter")) { + if (PREVENT_LOAD_PACKAGES.stream().anyMatch(name::startsWith)) { throw new ClassNotFoundException(name); } - if (name.contains("jdk.internal.org.objectweb.asm.Type")) { - if (StackTraceRule.check()) { - throw new ClassNotFoundException(name); - } - } } + } diff --git a/src/main/java/com/novitechie/PrivacyPlugin.java b/src/main/java/com/novitechie/PrivacyPlugin.java index f3bac5d..72ac845 100644 --- a/src/main/java/com/novitechie/PrivacyPlugin.java +++ b/src/main/java/com/novitechie/PrivacyPlugin.java @@ -23,7 +23,6 @@ public class PrivacyPlugin implements PluginEntry { new VMOptionsTransformer(), new PluginClassLoaderTransformer(), new LicensingFacadeTransformer(), - new PluginManagerCoreTransformer(), - new ClassTransformer()); + new PluginManagerCoreTransformer()); } } diff --git a/src/main/java/com/novitechie/SafeClassWriter.java b/src/main/java/com/novitechie/SafeClassWriter.java index 875d1a4..4e6e89d 100644 --- a/src/main/java/com/novitechie/SafeClassWriter.java +++ b/src/main/java/com/novitechie/SafeClassWriter.java @@ -29,13 +29,13 @@ package com.novitechie; -import java.io.IOException; -import java.io.InputStream; - import jdk.internal.org.objectweb.asm.ClassReader; import jdk.internal.org.objectweb.asm.ClassWriter; import jdk.internal.org.objectweb.asm.Opcodes; +import java.io.IOException; +import java.io.InputStream; + /** @@ -146,13 +146,13 @@ public class SafeClassWriter extends ClassWriter { throws IOException { while (!"java/lang/Object".equals(type)) { String[] itfs = info.getInterfaces(); - for (int i = 0; i < itfs.length; ++i) { - if (itfs[i].equals(itf)) { + for (String s : itfs) { + if (s.equals(itf)) { return true; } } - for (int i = 0; i < itfs.length; ++i) { - if (typeImplements(itfs[i], typeInfo(itfs[i]), itf)) { + for (String s : itfs) { + if (typeImplements(s, typeInfo(s), itf)) { return true; } } diff --git a/src/main/java/com/novitechie/StackTraceRule.java b/src/main/java/com/novitechie/StackTraceRule.java index 6ddeb8c..240be65 100644 --- a/src/main/java/com/novitechie/StackTraceRule.java +++ b/src/main/java/com/novitechie/StackTraceRule.java @@ -23,7 +23,7 @@ public class StackTraceRule { for (StackTraceElement stackTraceElement : stackTrace) { if (!PACKAGE_NAME_PATTERN.matcher(stackTraceElement.getMethodName()).matches()) { Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DAY_OF_MONTH, 180); + calendar.add(Calendar.DAY_OF_MONTH, 30); return calendar.getTime(); } } diff --git a/src/main/java/com/novitechie/VMOptionsTransformer.java b/src/main/java/com/novitechie/VMOptionsTransformer.java index 6532dfe..f213362 100644 --- a/src/main/java/com/novitechie/VMOptionsTransformer.java +++ b/src/main/java/com/novitechie/VMOptionsTransformer.java @@ -1,8 +1,8 @@ package com.novitechie; import com.janetfilter.core.plugin.MyTransformer; -import jdk.internal.org.objectweb.asm.*; -import jdk.internal.org.objectweb.asm.commons.AdviceAdapter; +import jdk.internal.org.objectweb.asm.ClassReader; +import jdk.internal.org.objectweb.asm.ClassWriter; import jdk.internal.org.objectweb.asm.tree.*; import static jdk.internal.org.objectweb.asm.Opcodes.*;