Я пытаюсь создать приложение, которое позволит людям использовать asm для внедрения кода в метод onEnable плагина Minecraft. Кажется, мой код не работает, и я в большом замешательстве. Окажите поддержку.
Код:
private byte[] modifyClassBytecode(InputStream classInputStream) throws IOException {
ClassReader classReader = new ClassReader(classInputStream);
ClassNode classNode = new ClassNode();
classReader.accept(classNode, 0);
for (MethodNode method : classNode.methods) {
if (method.name.equals("onEnable") && method.desc.equals("()V")) {
System.out.println("Found onEnable method. Modifying...");
InsnList insnList = new InsnList();
insnList.add(new FieldInsnNode(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"));
insnList.add(new LdcInsnNode("Hello, world"));
insnList.add(new MethodInsnNode(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false));
method.instructions.insert(insnList);
}
}
ClassWriter classWriter = new ClassWriter(0);
classNode.accept(classWriter);
return classWriter.toByteArray();
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... -using-asm
Манипулирование байт-кодом Java с использованием asm [закрыто] ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение