From fa7205ca0aade4300c39de6bdc308ef367ae1735 Mon Sep 17 00:00:00 2001 From: X3F200C Date: Thu, 21 Mar 2024 22:26:21 -0400 Subject: [PATCH] Refine code and try to add SSL certificate fix --- pom.xml | 1 - .../launcherpatch/LauncherPatch.java | 24 ++++++++++++++++--- .../launcherpatch/LauncherPatcher.java | 16 ++++++------- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/pom.xml b/pom.xml index bdf539c..abc2782 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,6 @@ 1.7 - org.apache.maven.plugins diff --git a/src/main/java/net/x3f200c/pala4linux/launcherpatch/LauncherPatch.java b/src/main/java/net/x3f200c/pala4linux/launcherpatch/LauncherPatch.java index 08ee9f4..6e8ed0e 100644 --- a/src/main/java/net/x3f200c/pala4linux/launcherpatch/LauncherPatch.java +++ b/src/main/java/net/x3f200c/pala4linux/launcherpatch/LauncherPatch.java @@ -4,27 +4,45 @@ import java.lang.instrument.Instrumentation; import java.lang.instrument.UnmodifiableClassException; import java.lang.Class; import java.lang.String; +import java.lang.Exception; +import java.net.URL; +import javax.net.ssl.HttpsURLConnection; import net.x3f200c.pala4linux.launcherpatch.LauncherPatcher; public class LauncherPatch { public static void premain(String agentArgs, Instrumentation inst) { + try { + prepareCertificates(); + } catch (Exception e) { + System.out.println("[PalaLauncher4Linux] Failed to prepare certificates. "); + } patch(inst); } public static void agentmain(String agentArgs, Instrumentation inst) { + try { + prepareCertificates(); + } catch (Exception e) { + System.out.println("[PalaLauncher4Linux] Failed to prepare certificates. "); + } patch(inst); } + public static void prepareCertificates() throws Exception { + URL apacheMavenRepository = new URL("https://repo.maven.apache.org"); + + HttpsURLConnection connection = (HttpsURLConnection) apacheMavenRepository.openConnection(); + connection.connect(); + connection.disconnect(); + } public static void patch(Instrumentation inst) { Class routeHandlerClass = null; - ClassLoader routeHandlerClassLoader = null; try { routeHandlerClass = Class.forName("fr.paladium.router.route.common.CommonRoute"); - routeHandlerClassLoader = routeHandlerClass.getClassLoader(); } catch(ClassNotFoundException e) { } - LauncherPatcher dt = new LauncherPatcher(routeHandlerClass.getName(), routeHandlerClassLoader); + LauncherPatcher dt = new LauncherPatcher(routeHandlerClass.getName()); inst.addTransformer(dt, true); diff --git a/src/main/java/net/x3f200c/pala4linux/launcherpatch/LauncherPatcher.java b/src/main/java/net/x3f200c/pala4linux/launcherpatch/LauncherPatcher.java index 1c025c7..cf13d3c 100644 --- a/src/main/java/net/x3f200c/pala4linux/launcherpatch/LauncherPatcher.java +++ b/src/main/java/net/x3f200c/pala4linux/launcherpatch/LauncherPatcher.java @@ -10,24 +10,22 @@ import javassist.NotFoundException; import javassist.CannotCompileException; class LauncherPatcher implements ClassFileTransformer { - private final String targetClassName; + private final String routeTargetClassName; - public LauncherPatcher(String className, ClassLoader classLoader) { - this.targetClassName = className; + public LauncherPatcher(String routerClassName) { + this.routeTargetClassName = routerClassName; } @Override public byte[] transform(ClassLoader loader, String className, Class redefinedClass, ProtectionDomain protectionDomain, byte[] classBuffer) { byte[] bytecode = classBuffer; - String finalTargetClassName = this.targetClassName.replaceAll("\\.", "/"); - if (!className.equals(finalTargetClassName)) { - return bytecode; - } + ClassPool cp = ClassPool.getDefault(); - if (className.equals(finalTargetClassName)) { + String finalRouterClassName = this.routeTargetClassName.replaceAll("\\.", "/"); + + if (className.equals(finalRouterClassName)) { try { - ClassPool cp = ClassPool.getDefault(); CtClass crClass = cp.get("fr.paladium.router.route.common.CommonRoute"); CtMethod osGetterMethod = crClass.getDeclaredMethod("handleGetOS");