feat: support shell registry for all server

This commit is contained in:
ReaJason
2025-02-23 02:33:09 +08:00
parent 1980ae7072
commit 3274e8421d
89 changed files with 469 additions and 1180 deletions
@@ -0,0 +1,57 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.config.*;
import lombok.SneakyThrows;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
/**
* @author ReaJason
* @since 2025/2/22
*/
class GeneratorMainTest {
@Test
@SneakyThrows
@Disabled
void test() {
ShellConfig shellConfig = ShellConfig.builder()
.server(Server.Apusic)
.shellTool(ShellTool.Behinder)
.shellType(ShellType.LISTENER)
.targetJreVersion(Opcodes.V1_8)
.debug(true)
.build();
GodzillaConfig godzillaConfig = GodzillaConfig.builder()
.pass("pass")
.key("key")
.headerName("User-Agent")
.headerValue("test123").build();
CommandConfig commandConfig = CommandConfig.builder().paramName("listener").build();
BehinderConfig behinderConfig = BehinderConfig.builder()
.pass("test123")
.headerName("User-Agent")
.headerValue("test").build();
Suo5Config suo5Config = Suo5Config.builder()
.headerName("User-Agent")
.headerValue("test").build();
InjectorConfig injectorConfig = new InjectorConfig();
GenerateResult generateResult = MemShellGenerator.generate(shellConfig, injectorConfig, behinderConfig);
if (generateResult != null) {
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.encodeBase64String(generateResult.getInjectorBytes()));
// System.out.println(Packers.ScriptEngine.getInstance().pack(generateResult));
// Files.write(Path.of("target.jar"), Packer.INSTANCE.AgentJar.getPacker().packBytes(generateResult));
}
}
}
@@ -1,6 +1,7 @@
package com.reajason.javaweb.memshell.generator;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
import net.bytebuddy.jar.asm.ClassReader;
import net.bytebuddy.jar.asm.ClassVisitor;
import net.bytebuddy.jar.asm.Opcodes;
@@ -18,7 +19,7 @@ class ValveGeneratorTest {
@Test
void test() throws Exception {
Class<?> clazz = ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, ShellTool.Command);
Class<?> clazz = ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, CommandValve.class);
InputStream resourceAsStream = clazz.getClassLoader().getResourceAsStream(clazz.getName().replace('.', '/') + ".class");
assert resourceAsStream != null;
ClassReader cr = new ClassReader(resourceAsStream);