From be956cf3c91f9f1d7fcffe6e1c3fad2cb0b51024 Mon Sep 17 00:00:00 2001 From: TapirHeron <1948710271@qq.com> Date: Mon, 2 Jun 2025 10:06:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=99=E6=98=AF=E4=BF=AE=E6=94=B9=E5=90=8E?= =?UTF-8?q?=E7=9A=84MyClassLoader.java=20=E4=B8=8D=E8=BF=87=E6=9C=89?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E9=97=AE=E9=A2=98=EF=BC=8C=20=E4=BC=A0?= =?UTF-8?q?=E7=9A=84fqcn=E4=B8=BAtech.insight.ShengSheng=20=E4=BD=86?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E4=B8=AD=E5=8F=AA=E6=9C=89"=E5=8A=A0?= =?UTF-8?q?=E5=AF=86.class"=EF=BC=8C=E6=89=80=E4=BB=A5=E6=88=91=E6=8A=8A?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=86=99=E6=AD=BB=E4=BA=86=EF=BC=88=20String?= =?UTF-8?q?=20rootFile=20=3D=20System.getProperty("user.dir").concat(".?= =?UTF-8?q?=E5=8A=A0=E5=AF=86".replace('.',=20File.separatorChar)).concat(?= =?UTF-8?q?".class");=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/club/shengsheng/MyClassLoader.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/main/java/club/shengsheng/MyClassLoader.java b/src/main/java/club/shengsheng/MyClassLoader.java index 21026cf..e309811 100644 --- a/src/main/java/club/shengsheng/MyClassLoader.java +++ b/src/main/java/club/shengsheng/MyClassLoader.java @@ -1,9 +1,48 @@ package club.shengsheng; +import java.io.File; +import java.nio.file.Files; + /** * @author gongxuanzhangmelt@gmail.com **/ public class MyClassLoader extends ClassLoader { + @Override + protected Class loadClass(String name, boolean resolve) + throws ClassNotFoundException + { + synchronized (getClassLoadingLock(name)) { + // First, check if the class has already been loaded + Class c = findLoadedClass(name); + if (c == null) { + if (name.startsWith("tech")) { + c = findClass(name); + } else { + c = getParent().loadClass(name); + } + } + if (resolve) { + resolveClass(c); + } + return c; + } + } + @Override + protected Class findClass(String name) throws ClassNotFoundException { + String rootFile = System.getProperty("user.dir").concat(".加密".replace('.', File.separatorChar)).concat(".class"); + File classFile = new File(rootFile); + byte[] classBytes; + try { + classBytes = Files.readAllBytes( classFile.toPath()); + for (int i = 0; i < classBytes.length; i++) { + classBytes[i] -= 1; + } + + } catch (Exception e) { + throw new ClassNotFoundException(); + } + return defineClass(name, classBytes, 0, classBytes.length); + } }