МАНИПУЛЯЦИЯ С БАЙТЕКОДОМ JAVA с использованием ASMJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 МАНИПУЛЯЦИЯ С БАЙТЕКОДОМ JAVA с использованием ASM

Сообщение Anonymous »

Я пытаюсь создать приложение, которое позволит людям использовать 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»