Как видно из названия, мне нужно найти в скомпилированном class файле найти и заменить некоторые данные.
Допустим есть:
public class MyClass {
public static String staticField = "MyStaticField";
public String myField = "MyField";
public static void main(String[] args) {
System.out.println("OutString");
}
}
Он скомпилирован, собственно, в MyClass.class (который находится в своём jar файле, но это, михо, не проблема так как, всроенные в JRE, утилиты позволяют получить и редактировать данные в архивах). Декомпиляция неприемлема.
Нужно получить все строки ("MyStaticField", "MyField", "OutString") прямо из байткода, заменить некоторые из них и сохранить обратно в class файл. Поискав аналоги в интернете нашёл InClassTranslater, но он мне не подходит так как мне надо автоматизировать этот процесс. javap не возвращает сами строки, да и не особо ясно как записать их обратно в class (кроме тупого байтового поиска).
Собственно, есть ли библиотеки анализирующие байткод java с возможностью вносить изменения именно в данные? Или: Есть ли некие "блоки" байтов сигнализирующие, что дальше идёт строка (и когда строка заканчивается)?