import org.objectweb.asm.*; import org.objectweb.asm.tree.*; public class MyClassVisitor extends ClassNode { @Override public void visitEnd() { for (MethodNode method : methods) { InsnList instructions = method.instructions; AbstractInsnNode insnNode = instructions.getFirst(); while (insnNode != null) { // ... insnNode = insnNode.getNext(); } } super.visitEnd(); } } public class Main { public static void main(String[] args) throws Exception { ClassReader classReader = new ClassReader("com.example.MyClass"); ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS); MyClassVisitor classVisitor = new MyClassVisitor(); classReader.accept(classVisitor, ClassReader.SKIP_DEBUG); ClassNode classNode = classVisitor; // ... classNode.accept(classWriter); byte[] modifiedClass = classWriter.toByteArray(); // ... } }


上一篇:
下一篇:
切换中文