Alex_P97
@Alex_P97
Программист любитель

Как идентифицировать и изменить строку в java байткоде?

Как видно из названия, мне нужно найти в скомпилированном 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 с возможностью вносить изменения именно в данные? Или: Есть ли некие "блоки" байтов сигнализирующие, что дальше идёт строка (и когда строка заканчивается)?
  • Вопрос задан
  • 283 просмотра
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev
software engineer
Немного почитал (рекомендую прочесть вкратце тут: https://www.acloudtree.com/hacking-java-bytecode-f...

С байткодом проще - заменить текстовые строки можно без особых опасений. Можете написать скрипт на любом удобном для вас языке программирования, который найдет нужное, заменит и запишет назад.
Ответ написан
@private_tm
JAVA dev
Открыть любым HEX-редактором .class файл и менять сколько душа пожелает. String там в открытом виде.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 нояб. 2024, в 18:39
30000 руб./за проект
25 нояб. 2024, в 18:35
30000 руб./за проект
25 нояб. 2024, в 18:33
10000 руб./за проект