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();
// ...
}
}