diff --git a/activation.conf.example b/activation.conf.example
index 1de7a6e..35fc656 100644
--- a/activation.conf.example
+++ b/activation.conf.example
@@ -1,2 +1,5 @@
[SmartInput]
EQUAL,O00oOOO0
+
+[XcodeMap]
+EQUAL,com/adapgpt/xcodemapidea/b/a:checkActivation
diff --git a/pom.xml b/pom.xml
index 5bcb25b..4164e00 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,7 +63,7 @@
com.ja-netfilter
ja-netfilter
- 2.0.1
+ 2025.3.0
provided
diff --git a/src/main/java/com/yelochick/ActivationPlugin.java b/src/main/java/com/yelochick/ActivationPlugin.java
index 3c0e1c5..bc1d2c0 100644
--- a/src/main/java/com/yelochick/ActivationPlugin.java
+++ b/src/main/java/com/yelochick/ActivationPlugin.java
@@ -7,19 +7,21 @@ import com.janetfilter.core.plugin.PluginConfig;
import com.janetfilter.core.plugin.PluginEntry;
import com.yelochick.coolrequest.VipApiTransformer;
import com.yelochick.smartinput.OsLanguageManagerProxyTransformer;
+import com.yelochick.xcodemap.XcodeMapTransformer;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class ActivationPlugin implements PluginEntry {
private List smartInputRules;
+ private List xcodeMapRules;
@Override
public void init(Environment environment, PluginConfig config) {
smartInputRules = Collections.unmodifiableList(config.getBySection("SmartInput"));
+ xcodeMapRules = Collections.unmodifiableList(config.getBySection("XcodeMap"));
}
@Override
@@ -39,6 +41,10 @@ public class ActivationPlugin implements PluginEntry {
for (FilterRule rule : smartInputRules) {
transformers.add(new OsLanguageManagerProxyTransformer(rule.getRule()));
}
+ for (FilterRule rule : xcodeMapRules) {
+ String[] split = rule.getRule().split(":");
+ transformers.add(new XcodeMapTransformer(split[0], split[1]));
+ }
return transformers;
}
}
diff --git a/src/main/java/com/yelochick/SafeClassWriter.java b/src/main/java/com/yelochick/SafeClassWriter.java
index 6daa303..ef3ae1c 100644
--- a/src/main/java/com/yelochick/SafeClassWriter.java
+++ b/src/main/java/com/yelochick/SafeClassWriter.java
@@ -29,9 +29,9 @@
package com.yelochick;
-import jdk.internal.org.objectweb.asm.ClassReader;
-import jdk.internal.org.objectweb.asm.ClassWriter;
-import jdk.internal.org.objectweb.asm.Opcodes;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.Opcodes;
import java.io.IOException;
import java.io.InputStream;
diff --git a/src/main/java/com/yelochick/coolrequest/VipApiTransformer.java b/src/main/java/com/yelochick/coolrequest/VipApiTransformer.java
index 2a856f3..a4c8b60 100644
--- a/src/main/java/com/yelochick/coolrequest/VipApiTransformer.java
+++ b/src/main/java/com/yelochick/coolrequest/VipApiTransformer.java
@@ -2,11 +2,11 @@ package com.yelochick.coolrequest;
import com.janetfilter.core.plugin.MyTransformer;
import com.yelochick.SafeClassWriter;
-import jdk.internal.org.objectweb.asm.ClassReader;
-import jdk.internal.org.objectweb.asm.ClassWriter;
-import jdk.internal.org.objectweb.asm.tree.*;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.tree.*;
-import static jdk.internal.org.objectweb.asm.Opcodes.*;
+import static org.objectweb.asm.Opcodes.*;
/**
* @author yelochick
diff --git a/src/main/java/com/yelochick/smartinput/OsLanguageManagerProxyTransformer.java b/src/main/java/com/yelochick/smartinput/OsLanguageManagerProxyTransformer.java
index 7465027..f9f9e39 100644
--- a/src/main/java/com/yelochick/smartinput/OsLanguageManagerProxyTransformer.java
+++ b/src/main/java/com/yelochick/smartinput/OsLanguageManagerProxyTransformer.java
@@ -3,11 +3,11 @@ package com.yelochick.smartinput;
import com.janetfilter.core.commons.DebugInfo;
import com.janetfilter.core.plugin.MyTransformer;
import com.yelochick.SafeClassWriter;
-import jdk.internal.org.objectweb.asm.ClassReader;
-import jdk.internal.org.objectweb.asm.ClassWriter;
-import jdk.internal.org.objectweb.asm.tree.*;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.tree.*;
-import static jdk.internal.org.objectweb.asm.Opcodes.*;
+import static org.objectweb.asm.Opcodes.*;
/**
* @author yelochick
diff --git a/src/main/java/com/yelochick/xcodemap/XcodeMapTransformer.java b/src/main/java/com/yelochick/xcodemap/XcodeMapTransformer.java
new file mode 100644
index 0000000..8b411f9
--- /dev/null
+++ b/src/main/java/com/yelochick/xcodemap/XcodeMapTransformer.java
@@ -0,0 +1,51 @@
+package com.yelochick.xcodemap;
+
+import com.janetfilter.core.plugin.MyTransformer;
+import com.yelochick.SafeClassWriter;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.tree.*;
+
+import static org.objectweb.asm.Opcodes.*;
+
+/**
+ * @author yelochick
+ */
+public class XcodeMapTransformer implements MyTransformer {
+
+ private final String hookClassName;
+ private final String hookMethodName;
+
+ public XcodeMapTransformer(String hookClassName, String hookMethodName) {
+ this.hookClassName = hookClassName;
+ this.hookMethodName = hookMethodName;
+ }
+
+ @Override
+ public String getHookClassName() {
+ return hookClassName;
+ }
+
+ @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 (hookMethodName.equals(m.name)) {
+ m.instructions.clear();
+ m.tryCatchBlocks.clear();
+ InsnList list = new InsnList();
+ // 返回-4
+ list.add(new IntInsnNode(BIPUSH, -4));
+ list.add(new InsnNode(IRETURN));
+ m.instructions.insert(list);
+ }
+ }
+
+ SafeClassWriter writer = new SafeClassWriter(null, null, ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
+ node.accept(writer);
+ return writer.toByteArray();
+ }
+}