我想获得MethodNodeofmain()功能
public class TestMethodNode {
public void main() {
}
}
所以我试过这个
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.tree.MethodNode;
import static org.objectweb.asm.Opcodes.ASM7;
import java.io.IOException;
public class Instrumentation {
public byte[] editFunction(String className) throws IOException {
byte[] modifiedClass = null;
try {
ClassReader classReader = new ClassReader(className);
ClassWriter classWriter = new ClassWriter(classReader, ClassWriter.COMPUTE_FRAMES);
ClassVisitor classAdapter = new ClassVisitor(ASM7, classWriter) {
public MethodVisitor visitMethod(
int access,
String name,
String desc,
String signature,
String[] exceptions) {
if (name.equals("main")) {
final MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
MethodNode methodNode = new MethodNode(access, name, desc, signature, exceptions) {
public void visitEnd() {
// transform / analyze method here
accept(methodVisitor);
}
};
return methodNode;
} else {
return super.visitMethod(access, name, desc, signature, exceptions);
}
}
};
throw ex;
}
return modifiedClass;
}
}
并IllegalStateException在创建时从 .../asm/tree/MethodNode.java 获取MethodNode
我在做什么错?(我不想破解 Minecraft,我正在研究并尝试操作调用堆栈,其中涉及 lambda 表达式和嵌套/内部类,用于在运行时使用字节码操作的工作流引擎。)
MM们
婷婷同学_
相关分类