mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-23 15:31:53 +08:00
feat: support AbstractTranslet packer
This commit is contained in:
+37
@@ -0,0 +1,37 @@
|
||||
package com.reajason.javaweb.asm;
|
||||
|
||||
import net.bytebuddy.ByteBuddy;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.objectweb.asm.ClassReader;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/11/19
|
||||
*/
|
||||
class ClassSuperClassUtilsTest {
|
||||
@Test
|
||||
void test() {
|
||||
String superClassName = "com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet";
|
||||
byte[] bytes = new ByteBuddy().redefine(EmptySuperClass.class).make().getBytes();
|
||||
byte[] newBytes = ClassSuperClassUtils.addSuperClass(bytes, superClassName);
|
||||
assertEquals("java/lang/Object", new ClassReader(bytes).getSuperName());
|
||||
assertEquals(superClassName.replace(".", "/"), new ClassReader(newBytes).getSuperName());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testException() {
|
||||
String superClassName = "com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet";
|
||||
byte[] bytes = new ByteBuddy().redefine(SuperClass.class).make().getBytes();
|
||||
assertThrows(IllegalStateException.class, () -> ClassSuperClassUtils.addSuperClass(bytes, superClassName));
|
||||
}
|
||||
|
||||
class EmptySuperClass {
|
||||
|
||||
}
|
||||
|
||||
class SuperClass extends EmptySuperClass {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user