feat: support rainbow v2025.3.4
This commit is contained in:
		@@ -9,8 +9,9 @@ PREFIX,com.janetfilter
 | 
			
		||||
PREFIX,jdk.internal.org.objectweb.asm
 | 
			
		||||
 | 
			
		||||
[Hide_Resource]
 | 
			
		||||
EQUAL,/6c81ec87e55d331c267262e892427a3d93d76683.txt
 | 
			
		||||
# EQUAL,/6c81ec87e55d331c267262e892427a3d93d76683.txt
 | 
			
		||||
PREFIX,/com/janetfilter
 | 
			
		||||
PREFIX,/com/novitechie
 | 
			
		||||
 | 
			
		||||
[Hide_Env]
 | 
			
		||||
EQUAL,IDEA_VM_OPTIONS
 | 
			
		||||
@@ -37,8 +38,8 @@ EQUAL,janf.output
 | 
			
		||||
 | 
			
		||||
[Ignore_Class]
 | 
			
		||||
EQUAL,com.janetfilter.core.utils.StringUtils
 | 
			
		||||
EQUAL,com.janetfilter.core.utils.DateUtils
 | 
			
		||||
# EQUAL,com.janetfilter.core.utils.DateUtils
 | 
			
		||||
 | 
			
		||||
[Ignore_Resource]
 | 
			
		||||
EQUAL,/com/janetfilter/core/utils/StringUtils.class
 | 
			
		||||
EQUAL,/com/janetfilter/core/utils/DateUtils.class
 | 
			
		||||
# EQUAL,/com/janetfilter/core/utils/DateUtils.class
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@ public class LicensingFacadeTransformer implements MyTransformer {
 | 
			
		||||
        for (MethodNode m : node.methods) {
 | 
			
		||||
            if ("getLicenseExpirationDate".equals(m.name)) {
 | 
			
		||||
                InsnList list = new InsnList();
 | 
			
		||||
                LabelNode L0 = new LabelNode();
 | 
			
		||||
                list.add(new MethodInsnNode(INVOKESTATIC, "com/novitechie/rules/StackTraceRule", "hook", "()Ljava/util/Date;", false));
 | 
			
		||||
                list.add(new InsnNode(DUP));
 | 
			
		||||
                LabelNode labelNode = new LabelNode();
 | 
			
		||||
                list.add(new JumpInsnNode(IFNULL, labelNode));
 | 
			
		||||
                list.add(new JumpInsnNode(IFNULL, L0));
 | 
			
		||||
                list.add(new InsnNode(ARETURN));
 | 
			
		||||
                list.add(labelNode);
 | 
			
		||||
                list.add(L0);
 | 
			
		||||
                list.add(new InsnNode(POP));
 | 
			
		||||
                m.instructions.insert(list);
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,9 @@ public class MethodTransformer implements MyTransformer {
 | 
			
		||||
                list.add(new InsnNode(AALOAD));
 | 
			
		||||
                list.add(new MethodInsnNode(INVOKESTATIC, "java/lang/String", "valueOf", "(Ljava/lang/Object;)Ljava/lang/String;", false));
 | 
			
		||||
                list.add(new VarInsnNode(ASTORE, 3));
 | 
			
		||||
                // list.add(new LdcInsnNode("com.janetfilter"));
 | 
			
		||||
                list.add(new VarInsnNode(ALOAD, 3));
 | 
			
		||||
                // list.add(new MethodInsnNode(INVOKEVIRTUAL, "java/lang/String", "startsWith", "(Ljava/lang/String;)Z", false));
 | 
			
		||||
                list.add(new MethodInsnNode(INVOKESTATIC, "com/novitechie/rules/BootstrapClassRule", "check", "(Ljava/lang/String;)Z", false));
 | 
			
		||||
                list.add(new JumpInsnNode(IFEQ, L0));
 | 
			
		||||
                list.add(new MethodInsnNode(INVOKESTATIC, "com/novitechie/rules/StackTraceRule", "check", "()Z", false));
 | 
			
		||||
 
 | 
			
		||||
@@ -31,8 +31,7 @@ public class PluginManagerCoreTransformer implements MyTransformer {
 | 
			
		||||
                LabelNode L3 = new LabelNode();
 | 
			
		||||
                list.add(new MethodInsnNode(INVOKESTATIC, "com/novitechie/rules/StackTraceRule", "check", "()Z", false));
 | 
			
		||||
                list.add(new JumpInsnNode(IFEQ, L0));
 | 
			
		||||
                list.add(new FieldInsnNode(GETSTATIC, "com/intellij/ide/plugins/PluginManagerCore", "INSTANCE", "Lcom/intellij/ide/plugins/PluginManagerCore;"));
 | 
			
		||||
                list.add(new MethodInsnNode(INVOKEVIRTUAL, "com/intellij/ide/plugins/PluginManagerCore", "getPluginSet", "()Lcom/intellij/ide/plugins/PluginSet;", false));
 | 
			
		||||
                list.add(new MethodInsnNode(INVOKESTATIC, "com/intellij/ide/plugins/PluginManagerCore", "getPluginSet", "()Lcom/intellij/ide/plugins/PluginSet;", false));
 | 
			
		||||
                list.add(new FieldInsnNode(GETFIELD, "com/intellij/ide/plugins/PluginSet", "allPlugins", "Ljava/util/Set;"));
 | 
			
		||||
                list.add(new VarInsnNode(ASTORE, 0));
 | 
			
		||||
                list.add(new TypeInsnNode(NEW, "java/util/HashSet"));
 | 
			
		||||
 
 | 
			
		||||
@@ -1,28 +0,0 @@
 | 
			
		||||
package com.novitechie.rules;
 | 
			
		||||
 | 
			
		||||
import com.janetfilter.core.commons.DebugInfo;
 | 
			
		||||
import com.novitechie.LogUtil;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author YeloChick
 | 
			
		||||
 */
 | 
			
		||||
public class ClassRule {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    private static final List<String> PREVENT_LOAD_METHOD = new ArrayList<String>() {
 | 
			
		||||
        {
 | 
			
		||||
            add("findBootstrapClass");
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    public static void checkMethod(String name) throws Exception {
 | 
			
		||||
        if (PREVENT_LOAD_METHOD.stream().anyMatch(name::equals)) {
 | 
			
		||||
            DebugInfo.output("======================LoadMethod: " + name);
 | 
			
		||||
            LogUtil.printStackTrace();
 | 
			
		||||
            throw new NoSuchMethodException();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -20,7 +20,7 @@ public class IdeaPluginRule {
 | 
			
		||||
 | 
			
		||||
    public static boolean check(String name) {
 | 
			
		||||
        if (checkHidePlugin(name)) {
 | 
			
		||||
            DebugInfo.output("======================LoadPlugin: " + name);
 | 
			
		||||
            DebugInfo.output("======================Hide Plugin: " + name);
 | 
			
		||||
            LogUtil.printStackTrace();
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ public class LoadClassRule {
 | 
			
		||||
 | 
			
		||||
    public static void check(String name) throws Exception {
 | 
			
		||||
        if (!checkIgnoreClass(name) && checkHidePackage(name)) {
 | 
			
		||||
            DebugInfo.output("======================LoadClass: " + name);
 | 
			
		||||
            DebugInfo.output("======================Hide Class: " + name);
 | 
			
		||||
            LogUtil.printStackTrace();
 | 
			
		||||
            throw new ClassNotFoundException(name);
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ public class ResourceRule {
 | 
			
		||||
 | 
			
		||||
    public static boolean check(String name) {
 | 
			
		||||
        if (!checkIgnoreResource(name) && checkHideResource(name) && StackTraceRule.check()) {
 | 
			
		||||
            DebugInfo.output("======================LoadResource: " + name);
 | 
			
		||||
            DebugInfo.output("======================Hide Resource: " + name);
 | 
			
		||||
            LogUtil.printStackTrace();
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ public class SystemRule {
 | 
			
		||||
 | 
			
		||||
    public static boolean checkEnv(String name) {
 | 
			
		||||
        if (checkHideEnv(name) && StackTraceRule.check()) {
 | 
			
		||||
            DebugInfo.output("======================LoadEnv: " + name);
 | 
			
		||||
            DebugInfo.output("======================Hide Env: " + name);
 | 
			
		||||
            LogUtil.printStackTrace();
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
@@ -32,7 +32,7 @@ public class SystemRule {
 | 
			
		||||
 | 
			
		||||
    public static boolean checkProperty(String name) {
 | 
			
		||||
        if (checkHideProperty(name) && StackTraceRule.check()) {
 | 
			
		||||
            DebugInfo.output("======================LoadProperty: " + name);
 | 
			
		||||
            DebugInfo.output("======================Hide Property: " + name);
 | 
			
		||||
            LogUtil.printStackTrace();
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@ import java.nio.file.Path;
 | 
			
		||||
public class VMOptionsRule {
 | 
			
		||||
 | 
			
		||||
    public static Path hook() {
 | 
			
		||||
        DebugInfo.output("======================Hide VMOptions");
 | 
			
		||||
        String tmpdir = System.getProperty("java.io.tmpdir");
 | 
			
		||||
        File file = new File(tmpdir, "fake.vmoptions");
 | 
			
		||||
        if (file.exists()) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user