Существует ли редактор классов Java / байт-кода для редактирования инструкций?

Есть ли утилита (или плагин Eclipse) для редактирования файлов классов Java? Я хотел бы манипулировать байт-кодом файла класса Java, не перекомпилируя его и не имея полного пути сборки.

Например, чтобы переименовать методы, добавить / удалить инструкции, изменить константы и т. Д.

Единственные утилиты, которые я нашел:

  • класс, но он очень ограничен в функциональности (например, переименование вещей и манипулирование инструкциями невозможно).

  • jbe не сохраняет изменения (возможно, из-за сбоя проверки класса - до того, как я внес какие-либо изменения, хотя класс работает отлично)

    (у jbe изначально была проблема с classpath, помогло добавление пути к классу в файл jbe.bat)

4 ответа

Решение

Я не видел ни одного байтового кода -> байт-кода, но много бэкэндов.

Я бы посоветовал вам взглянуть на множество библиотек манипулирования байтовым кодом, таких как javassist которые позволяют загружать байт-код, манипулировать им и сохранять его обратно на диск, а затем записывать небольшую основную запись, которая делает именно это

Я использую reJ для редактирования файлов классов напрямую.

Он позволяет редактировать инструкции, методы, пул констант, классы diff и разделенное представление с помощью шестнадцатеричного редактора.

Это смехотворно круто.

Я написал Java-ассемблер и дизассемблер с открытым исходным кодом, который может оказаться полезным.

Это позволяет вам разбирать файл классов в удобочитаемую сборку, редактировать его, а затем снова собирать в класс. Первоначально он был разработан для написания запутанных крэкмесов, поэтому он поддерживает множество неясных функций, которых не поддерживают многие другие инструменты. Если вам нужны какие-либо функции, которые в данный момент не поддерживаются, свяжитесь со мной, и я посмотрю, что я могу сделать.

Считаете ли вы полезным этот список библиотек манипулирования байтами и генерации кода?

Другие вопросы по тегам