1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| package test;
import java.io.FileOutputStream;
import java.io.IOException;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
public class AsmVisitor {
private static String SUPER_CLASS_0 = "sun/reflect/SuperMagic";
private static String SUPER_CLASS_1 = "java/lang/Object";
public static byte[] generate() {
ClassWriter cw = new ClassWriter(0);
cw.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER,
"test/Access", null, SUPER_CLASS_0, null);
MethodVisitor visitMethod = cw.visitMethod(1, "<init>", "()V", null,
null);
visitMethod.visitCode();
visitMethod.visitVarInsn(Opcodes.ALOAD, 0);
visitMethod.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object",
"<init>", "()V");
visitMethod.visitMethodInsn(Opcodes.INVOKESTATIC, "test/ClassPrivee",
"privateMethod", "()V");
visitMethod.visitInsn(Opcodes.RETURN);
visitMethod.visitMaxs(1, 1);
visitMethod.visitEnd();
cw.visitEnd();
return cw.toByteArray();
}
} |
Partager