From 78351741abf6d46838dd6f6574ffb8a387199716 Mon Sep 17 00:00:00 2001 From: Barcelona-v <1361416759@qq.com> Date: Mon, 2 Jun 2025 22:27:58 +0800 Subject: [PATCH 1/2] refactor loadClass method to decrypt class file and load it --- .../java/club/shengsheng/MyClassLoader.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/main/java/club/shengsheng/MyClassLoader.java b/src/main/java/club/shengsheng/MyClassLoader.java index 21026cf..c1ca330 100644 --- a/src/main/java/club/shengsheng/MyClassLoader.java +++ b/src/main/java/club/shengsheng/MyClassLoader.java @@ -1,9 +1,42 @@ 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 + public Class loadClass(String name) throws ClassNotFoundException { + synchronized (getClassLoadingLock(name)) { + // First, check if the class has already been loaded + Class c = findLoadedClass(name); + if(c == null) { + if(name.equals("tech.insight.ShengSheng")) { + c = findClass(name); + }else { + c = getParent().loadClass(name); + } + } + return c; + } + } + @Override + protected Class findClass(String name) throws ClassNotFoundException { + String path = "加密.class"; + File file = new File("D:\\project\\learn\\custom-classloader", path); + try { + byte[] bytes = Files.readAllBytes(file.toPath()); + for(int i = 0; i < bytes.length; i++) { + bytes[i] = --bytes[i]; + } + return defineClass(name, bytes, 0, bytes.length); + } catch (IOException e) { + throw new ClassNotFoundException(name); + } + } } From 2a0f54e920c759829ecbaf40564a9444ff9ac16d Mon Sep 17 00:00:00 2001 From: Barcelona-v <1361416759@qq.com> Date: Mon, 2 Jun 2025 22:31:32 +0800 Subject: [PATCH 2/2] refactor loadClass method to decrypt class file and load it --- src/main/java/club/shengsheng/MyClassLoader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/club/shengsheng/MyClassLoader.java b/src/main/java/club/shengsheng/MyClassLoader.java index c1ca330..fe58a78 100644 --- a/src/main/java/club/shengsheng/MyClassLoader.java +++ b/src/main/java/club/shengsheng/MyClassLoader.java @@ -27,7 +27,7 @@ public Class loadClass(String name) throws ClassNotFoundException { @Override protected Class findClass(String name) throws ClassNotFoundException { String path = "加密.class"; - File file = new File("D:\\project\\learn\\custom-classloader", path); + File file = new File(".", path); try { byte[] bytes = Files.readAllBytes(file.toPath()); for(int i = 0; i < bytes.length; i++) {