Учитывая массив byte[]
для .class файл: можно ли переименовать все ссылки на классы для данного класса внутри байт-кода? (Например, от test.class ->test_new_version.class включая все конструкторы или любые другие ссылки на байт-коды). Если да, то для чего это хорошая библиотека?Переименование класса Java в представлении Bytecode
0
A
ответ
0
Это возможно, используя библиотеку ASM. FAQ для этой библиотеки даже дает example for how to rename a class in its tutorial.
Фактически, вам необходимо использовать RemappingClassAdapter
, который поставляется с утилитами библиотеки. Чтобы сгенерировать законный байтовый код, переименованный класс должен быть полностью бинарным, совместимым с замененным классом.
Смежные вопросы
- 1. refractoring java bytecode
- 2. Java Bytecode Injection
- 3. Переименование класса - значение поля в Java
- 4. Java: новый экземпляр from bytecode
- 5. Оптимизация компилятора: Java bytecode
- 6. Java Bytecode Signatures
- 7. Java Bytecode DUP
- 8. Запуск Java bytecode
- 9. Trace java bytecode stream
- 10. Программирование на Java bytecode
- 11. Компиляция Java Bytecode
- 12. throws vs Java Bytecode
- 13. java bytecode editor?
- 14. Библиотеки манипуляции Java Bytecode
- 15. Java bytecode компилятор в JavaScript
- 16. Перемещение java-класса bytecode из jvm в jvm
- 17. Получить Java Bytecode на Android
- 18. Переименование класса в ретроспективе?
- 19. Имеет ли файл класса Bytecode функции JRElibrary?
- 20. Типы в Bytecode
- 21. Абстрактная машина для Java bytecode
- 22. Java bytecode: типы локальных переменных?
- 23. java bytecode - no ipush инструкция
- 24. Java Bytecode Manipulation Library Предложения
- 25. Java Bytecode Manipulation и API отражения Java?
- 26. Java bytecode, java Поставщик и invokedynamic аргумент
- 27. Переименование файла в Java
- 28. Переименование файла в java
- 29. MEDIA_URL в представлении класса
- 30. Java: переименование файлов - неправильное переименование файлов
вы можете сделать это, используя библиотеку ASM. –
Теоретически возможно создать класс, который нельзя переименовать из-за ограничений класса. Но это то, чего вы никогда не увидите на практике. ASM, вероятно, самая популярная библиотека для этого. – Antimony
@Peter Lawrey: на самом деле ASM очень плохо для этой работы. Переименование ссылки класса с использованием ASM подразумевает перемещение всех полей, методов, аннотаций и т. Д. И повторение операции замены для каждого артефакта байт-кода, относящегося к классу, тогда как обычно есть только одна ссылка на имя и одно вхождение на каждую отдельную подпись, которая должна быть заменена в постоянном пуле который можно обработать, не глядя на остальную часть класса. – Holger