Есть ли редактор java classfile/bytecode для редактирования инструкций?

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

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

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

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

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

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


person MRalwasser    schedule 22.07.2010    source источник
comment
Что не так с jbe? Это Java, поэтому он должен работать где угодно.   -  person musiKk    schedule 22.07.2010
comment
@musikk Возникает исключение: Исключение в потоке main java.lang.NoClassDefFoundError: ee/ioc/cs/jbe/browser/BrowserApplication   -  person MRalwasser    schedule 22.07.2010
comment
исключение не является сбоем. У вас проблема с classpath.   -  person Thorbjørn Ravn Andersen    schedule 22.07.2010
comment
@ Thorbjørn Ravn Andersen: у jbe была проблема с путем к классам при использовании поставляемого jbe.bat. Я изменил его, теперь он работает, но я все еще не могу его использовать (см. отредактированный текст выше)   -  person MRalwasser    schedule 22.07.2010
comment
Обычно я отбрасываю проект, если не могу запустить предоставленные примеры для начала работы. Если это не работает, то что еще не работает?   -  person Thorbjørn Ravn Andersen    schedule 09.08.2010
comment
@ Thorbjørn Ravn Andersen: Это одна из причин, по которой я прошу другие утилиты, кроме упомянутых выше.   -  person MRalwasser    schedule 09.08.2010
comment
возможный дубликат редактора байт-кода Java?   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 05.11.2013


Ответы (4)


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

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

person Thorbjørn Ravn Andersen    schedule 22.07.2010

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

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

Это невероятно круто.

person nahsra    schedule 29.01.2011
comment
reJ похоже мертв (последний релиз состоялся в 2007 году) - person MRalwasser; 17.06.2014
comment
reJ был бы потрясающим, если бы редактирование работало. Я только что попытался вставить инструкцию ifne, для которой требуется параметр, я получаю исключение NullPointerException, потому что его графический интерфейс пользователя остается незавершенным, он не позволяет передать ожидаемое смещение ветвления. На самом деле, я бы посоветовал использовать reJ для отображения инструкций, декомпилятор Java для проверки правильности понимания изменений и простой шестнадцатеричный редактор для редактирования файлов классов. - person gouessej; 20.02.2018
comment
Кстати, JByteMod просто работает, он делает то, что не может сделать reJ: grax.info Я использовал его для патч JOGL 2.3.2 :) - person gouessej; 20.02.2018

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

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

person Antimony    schedule 18.12.2012

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

person Guy Sensei    schedule 22.07.2010
comment
Мне нужны рабочие инструменты, у меня нет времени кодировать такой инструмент самостоятельно (ни с помощью этих библиотек). - person MRalwasser; 30.07.2010