Существует ли редактор классов Java / байт-кода для редактирования инструкций?
Есть ли утилита (или плагин Eclipse) для редактирования файлов классов Java? Я хотел бы манипулировать байт-кодом файла класса Java, не перекомпилируя его и не имея полного пути сборки.
Например, чтобы переименовать методы, добавить / удалить инструкции, изменить константы и т. Д.
Единственные утилиты, которые я нашел:
класс, но он очень ограничен в функциональности (например, переименование вещей и манипулирование инструкциями невозможно).
jbe не сохраняет изменения (возможно, из-за сбоя проверки класса - до того, как я внес какие-либо изменения, хотя класс работает отлично)
(у jbe изначально была проблема с classpath, помогло добавление пути к классу в файл jbe.bat)
4 ответа
Я не видел ни одного байтового кода -> байт-кода, но много бэкэндов.
Я бы посоветовал вам взглянуть на множество библиотек манипулирования байтовым кодом, таких как javassist
которые позволяют загружать байт-код, манипулировать им и сохранять его обратно на диск, а затем записывать небольшую основную запись, которая делает именно это
Я использую reJ для редактирования файлов классов напрямую.
Он позволяет редактировать инструкции, методы, пул констант, классы diff и разделенное представление с помощью шестнадцатеричного редактора.
Это смехотворно круто.
Я написал Java-ассемблер и дизассемблер с открытым исходным кодом, который может оказаться полезным.
Это позволяет вам разбирать файл классов в удобочитаемую сборку, редактировать его, а затем снова собирать в класс. Первоначально он был разработан для написания запутанных крэкмесов, поэтому он поддерживает множество неясных функций, которых не поддерживают многие другие инструменты. Если вам нужны какие-либо функции, которые в данный момент не поддерживаются, свяжитесь со мной, и я посмотрю, что я могу сделать.
Считаете ли вы полезным этот список библиотек манипулирования байтами и генерации кода?