From 7a9f82629c4855884f0cba806896e3aed4b7c3eb Mon Sep 17 00:00:00 2001 From: yelochick Date: Thu, 31 Jul 2025 21:50:41 +0800 Subject: [PATCH] feat: support rainbow v2025.3.2 --- .../novitechie/RuntimeMXBeanTransformer.java | 2 +- .../com/novitechie/rules/LoadClassRule.java | 15 ++++++++++++--- .../com/novitechie/rules/ResourceRule.java | 19 ++++++++++++++----- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/novitechie/RuntimeMXBeanTransformer.java b/src/main/java/com/novitechie/RuntimeMXBeanTransformer.java index faa6bc0..69dc722 100644 --- a/src/main/java/com/novitechie/RuntimeMXBeanTransformer.java +++ b/src/main/java/com/novitechie/RuntimeMXBeanTransformer.java @@ -28,7 +28,7 @@ public class RuntimeMXBeanTransformer implements MyTransformer { list.add(new MethodInsnNode(INVOKESTATIC, "com/novitechie/rules/StackTraceRule", "check", "()Z", false)); LabelNode labelNode = new LabelNode(); list.add(new JumpInsnNode(IFEQ, labelNode)); - list.add(new LdcInsnNode("")); + list.add(new LdcInsnNode("sorry, you can not read anything. haha!")); list.add(new MethodInsnNode(INVOKESTATIC, "java/util/Collections", "singletonList", "(Ljava/lang/Object;)Ljava/util/List;", false)); list.add(new InsnNode(ARETURN)); list.add(labelNode); diff --git a/src/main/java/com/novitechie/rules/LoadClassRule.java b/src/main/java/com/novitechie/rules/LoadClassRule.java index 98952ba..bd836f7 100644 --- a/src/main/java/com/novitechie/rules/LoadClassRule.java +++ b/src/main/java/com/novitechie/rules/LoadClassRule.java @@ -16,12 +16,21 @@ public class LoadClassRule { } }; + private static final List IGNORE_CLASS = new ArrayList() { + { + add("com.janetfilter.core.utils.StringUtils"); + } + }; + public static void check(String name) throws Exception { boolean f = PREVENT_LOAD_PACKAGES.stream().anyMatch(name::startsWith); if (f) { - DebugInfo.output("======================LoadClass: " + name); - LogUtil.printStackTrace(); - throw new ClassNotFoundException(name); + boolean f2 = IGNORE_CLASS.stream().anyMatch(name::equals); + if (!f2) { + DebugInfo.output("======================LoadClass: " + name); + LogUtil.printStackTrace(); + throw new ClassNotFoundException(name); + } } } diff --git a/src/main/java/com/novitechie/rules/ResourceRule.java b/src/main/java/com/novitechie/rules/ResourceRule.java index 8c5cbc3..036e223 100644 --- a/src/main/java/com/novitechie/rules/ResourceRule.java +++ b/src/main/java/com/novitechie/rules/ResourceRule.java @@ -13,18 +13,27 @@ public class ResourceRule { private static final List PREVENT_LOAD_RESOURCE = new ArrayList() { { - // add("/6c81ec87e55d331c267262e892427a3d93d76683.txt"); + add("/6c81ec87e55d331c267262e892427a3d93d76683.txt"); add("/com/janetfilter"); } }; + private static final List IGNORE_RESOURCE = new ArrayList() { + { + add("/com/janetfilter/core/utils/StringUtils.class"); + } + }; + public static boolean check(String name) { boolean f = PREVENT_LOAD_RESOURCE.stream().anyMatch(name::startsWith); if (f) { - if (StackTraceRule.check()) { - DebugInfo.output("======================LoadResource: " + name); - LogUtil.printStackTrace(); - return true; + boolean f1 = IGNORE_RESOURCE.stream().anyMatch(name::equals); + if (!f1) { + if (StackTraceRule.check()) { + DebugInfo.output("======================LoadResource: " + name); + LogUtil.printStackTrace(); + return true; + } } } return false;