From 50b98bb97e8acea7d08a5deadaf0a6ca1c4faab1 Mon Sep 17 00:00:00 2001 From: AJie <2740439102@qq.com> Date: Mon, 12 Jan 2026 19:37:05 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=B7=91=E9=80=9A=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/club/shengsheng/MyClassLoader.java | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/main/java/club/shengsheng/MyClassLoader.java b/src/main/java/club/shengsheng/MyClassLoader.java index 21026cf..8902047 100644 --- a/src/main/java/club/shengsheng/MyClassLoader.java +++ b/src/main/java/club/shengsheng/MyClassLoader.java @@ -1,9 +1,49 @@ package club.shengsheng; +import java.io.File; +import java.io.IOException; +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)) { + 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 path = name.replace(".", "/").concat(".class"); +// File file = new File("/Users/ysj/IdeaProjects/custom-classloader", path); + File file = new File("/Users/ysj/IdeaProjects/custom-classloader/加密.class"); + try { + + byte[] bytes = Files.readAllBytes(file.toPath()); + for (int i = 0; i < bytes.length; i++) { + bytes[i] -=1; + } + return defineClass(name,bytes,0,bytes.length); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} \ No newline at end of file From 376201ce441c915f3e63cd08f1b04df41d918b18 Mon Sep 17 00:00:00 2001 From: AJie <2740439102@qq.com> Date: Mon, 12 Jan 2026 19:49:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/club/shengsheng/MyClassLoader.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/club/shengsheng/MyClassLoader.java b/src/main/java/club/shengsheng/MyClassLoader.java index 8902047..196a6b2 100644 --- a/src/main/java/club/shengsheng/MyClassLoader.java +++ b/src/main/java/club/shengsheng/MyClassLoader.java @@ -16,7 +16,7 @@ protected Class loadClass(String name, boolean resolve) throws ClassNotFoundE Class c = findLoadedClass(name); if (c == null) { - if (name.startsWith("tech")){ + if (name.startsWith("tech.insight.ShengSheng")){ c = findClass(name); }else { @@ -31,10 +31,10 @@ protected Class loadClass(String name, boolean resolve) throws ClassNotFoundE } @Override - protected Class findClass(String name) throws ClassNotFoundException { - String path = name.replace(".", "/").concat(".class"); + protected Class findClass(String name) { +// String path = name.replace(".", "/").concat(".class"); // File file = new File("/Users/ysj/IdeaProjects/custom-classloader", path); - File file = new File("/Users/ysj/IdeaProjects/custom-classloader/加密.class"); + File file = new File("./加密.class"); try { byte[] bytes = Files.readAllBytes(file.toPath());