Skip to content

Commit 8eeabcd

Browse files
committed
fix: custom shell classname use itself
1 parent 3f00b29 commit 8eeabcd

File tree

3 files changed

+12
-10
lines changed

3 files changed

+12
-10
lines changed

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

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,6 @@ public static MemShellResult generate(ShellConfig shellConfig, InjectorConfig in
2424
if (server == null) {
2525
throw new GenerationException("Unsupported server: " + serverName);
2626
}
27-
28-
if (StringUtils.isBlank(shellToolConfig.getShellClassName())) {
29-
shellToolConfig.setShellClassName(CommonUtil.generateShellClassName(serverName, shellConfig.getShellType()));
30-
}
31-
32-
if (StringUtils.isBlank(injectorConfig.getInjectorClassName())) {
33-
injectorConfig.setInjectorClassName(CommonUtil.generateInjectorClassName());
34-
}
35-
3627
Class<?> injectorClass = null;
3728

3829
if (ShellTool.Custom.equals(shellConfig.getShellTool())) {
@@ -45,6 +36,13 @@ public static MemShellResult generate(ShellConfig shellConfig, InjectorConfig in
4536
Class<?> shellClass = shellInjectorPair.getLeft();
4637
injectorClass = shellInjectorPair.getRight();
4738
shellToolConfig.setShellClass(shellClass);
39+
if (StringUtils.isBlank(shellToolConfig.getShellClassName())) {
40+
shellToolConfig.setShellClassName(CommonUtil.generateShellClassName(serverName, shellConfig.getShellType()));
41+
}
42+
}
43+
44+
if (StringUtils.isBlank(injectorConfig.getInjectorClassName())) {
45+
injectorConfig.setInjectorClassName(CommonUtil.generateInjectorClassName());
4846
}
4947

5048
byte[] shellBytes = ShellToolFactory.generateBytes(shellConfig, shellToolConfig);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ protected ByteBuddyShellGenerator(ShellConfig shellConfig, T shellToolConfig) {
3131

3232
@Override
3333
public byte[] getBytes() {
34-
String shellClassName = shellToolConfig.getShellClassName();
3534
DynamicType.Builder<?> builder = getBuilder();
35+
String shellClassName = shellToolConfig.getShellClassName();
3636
Class<?> shellClass = shellToolConfig.getShellClass();
3737
if (shellClass != null) {
3838
shellToolConfig.setShellTypeDescription(TypeDescription.ForLoadedType.of(shellClass));

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import net.bytebuddy.dynamic.DynamicType;
99
import net.bytebuddy.jar.asm.ClassReader;
1010
import net.bytebuddy.pool.TypePool;
11+
import org.apache.commons.lang3.StringUtils;
1112

1213
import java.util.Base64;
1314

@@ -27,6 +28,9 @@ protected DynamicType.Builder<?> getBuilder() {
2728
byte[] classBytes = Base64.getDecoder().decode(shellClassBase64);
2829
ClassReader classReader = new ClassReader(classBytes);
2930
String className = classReader.getClassName().replace('/', '.');
31+
if (StringUtils.isBlank(shellToolConfig.getShellClassName())) {
32+
shellToolConfig.setShellClassName(className);
33+
}
3034
ClassFileLocator classFileLocator = ClassFileLocator.Simple.of(className, classBytes);
3135
TypeDescription typeDescription = new TypePool.Default(
3236
new TypePool.CacheProvider.Simple(), classFileLocator,

0 commit comments

Comments
 (0)