mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-22 23:11:52 +08:00
revert: obfuscation (#13)
This commit is contained in:
@@ -4,8 +4,6 @@ import com.reajason.javaweb.memshell.config.*;
|
||||
import com.reajason.javaweb.memshell.generator.*;
|
||||
import com.reajason.javaweb.memshell.server.AbstractShell;
|
||||
import com.reajason.javaweb.memshell.utils.CommonUtil;
|
||||
import me.n1ar4.clazz.obfuscator.api.ClassObf;
|
||||
import me.n1ar4.clazz.obfuscator.config.BaseConfig;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
@@ -48,39 +46,12 @@ public class MemShellGenerator {
|
||||
|
||||
byte[] shellBytes = generateShellBytes(shellConfig, shellToolConfig);
|
||||
|
||||
if (shellConfig.isObfuscate()) {
|
||||
BaseConfig config = BaseConfig.Default();
|
||||
config.setIgnorePublic(true);
|
||||
config.setEnableMethodName(false);
|
||||
config.setEnableFieldName(false);
|
||||
config.setEnableAES(false);
|
||||
config.setEnableAdvanceString(false);
|
||||
config.setQuiet(true);
|
||||
|
||||
ClassObf classObf = new ClassObf(config);
|
||||
shellBytes = classObf.run(shellBytes).getData();
|
||||
}
|
||||
|
||||
injectorConfig.setInjectorClass(injectorClass);
|
||||
injectorConfig.setShellClassName(shellToolConfig.getShellClassName());
|
||||
injectorConfig.setShellClassBytes(shellBytes);
|
||||
|
||||
InjectorGenerator injectorGenerator = new InjectorGenerator(shellConfig, injectorConfig);
|
||||
byte[] injectorBytes = injectorGenerator.generate();
|
||||
|
||||
if (shellConfig.isObfuscate()) {
|
||||
BaseConfig config = BaseConfig.Default();
|
||||
config.setIgnorePublic(true);
|
||||
config.setEnableMethodName(false);
|
||||
config.setEnableFieldName(false);
|
||||
config.setEnableAES(false);
|
||||
config.setEnableAdvanceString(false);
|
||||
config.setQuiet(true);
|
||||
|
||||
ClassObf classObf = new ClassObf(config);
|
||||
injectorBytes = classObf.run(injectorBytes).getData();
|
||||
}
|
||||
|
||||
Map<String, byte[]> innerClassBytes = injectorGenerator.getInnerClassBytes();
|
||||
|
||||
return GenerateResult.builder()
|
||||
|
||||
@@ -45,12 +45,6 @@ public class ShellConfig {
|
||||
@Builder.Default
|
||||
private boolean byPassJavaModule = false;
|
||||
|
||||
/**
|
||||
* 是否开启混淆
|
||||
*/
|
||||
@Builder.Default
|
||||
private boolean obfuscate = false;
|
||||
|
||||
/**
|
||||
* 是否开启调试
|
||||
*/
|
||||
|
||||
-12
@@ -6,9 +6,6 @@ import com.reajason.javaweb.memshell.shelltool.FilterChainInterface;
|
||||
import com.reajason.javaweb.memshell.shelltool.TestFilterChain;
|
||||
import com.reajason.javaweb.util.ClassUtils;
|
||||
import lombok.SneakyThrows;
|
||||
import me.n1ar4.clazz.obfuscator.api.ClassObf;
|
||||
import me.n1ar4.clazz.obfuscator.api.Result;
|
||||
import me.n1ar4.clazz.obfuscator.config.BaseConfig;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -65,15 +62,6 @@ public class CommandFilterChainASMTest {
|
||||
};
|
||||
cr.accept(cv, ClassReader.EXPAND_FRAMES);
|
||||
byte[] bytes2 = ClassRenameUtils.renameClass(cw.toByteArray(), TestFilterChain.class.getName() + "Asm");
|
||||
BaseConfig config = BaseConfig.Default();
|
||||
config.setIgnorePublic(true);
|
||||
config.setEnableMethodName(false);
|
||||
config.setEnableParamName(false);
|
||||
config.setEnableAES(false);
|
||||
config.setEnableAdvanceString(false);
|
||||
ClassObf classObf = new ClassObf(config);
|
||||
Result run = classObf.run(bytes2);
|
||||
bytes2 = run.getData();
|
||||
IOUtils.write(bytes2, new FileOutputStream(new File("godzilla2.class")));
|
||||
Class<?> clazz = ClassUtils.defineClass(bytes2);
|
||||
instance = spy(clazz.newInstance());
|
||||
|
||||
Reference in New Issue
Block a user