From aa20be3a397369c5046553e3fcf2d45ac035382a Mon Sep 17 00:00:00 2001 From: alin Date: Wed, 28 Jan 2026 21:07:16 +0800 Subject: [PATCH] commit --- .../java/club/shengsheng/MyClassLoader.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/main/java/club/shengsheng/MyClassLoader.java b/src/main/java/club/shengsheng/MyClassLoader.java index 21026cf..141b80b 100644 --- a/src/main/java/club/shengsheng/MyClassLoader.java +++ b/src/main/java/club/shengsheng/MyClassLoader.java @@ -1,9 +1,47 @@ 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 { + Class c = findLoadedClass(name); + if (c == null) { + if (name.startsWith("tech.insight.")) { + c = findClass(name); + }else { + c = loadClass(name,false); + } + } + return c; + } + + @Override + protected Class findClass(String name) throws ClassNotFoundException { + // tech.insight.ShengSheng + String path = "加密.class"; + File file = new File(path); + try { + byte[] bytes = Files.readAllBytes(file.toPath()); + decoderBytes(bytes); + Files.write(new File("shengsheng.class").toPath(), bytes); + return defineClass(name, bytes, 0, bytes.length); + } catch (IOException e) { + throw new ClassNotFoundException(name); + } + } + + private void decoderBytes(byte[] bytes) { + for (int i = 0; i < bytes.length; i++) { + byte b = bytes[i]; + bytes[i] = (byte) (b-1); + } + } }