Альтернатива синтаксическому анализатору абстрактного синтаксического дерева Eclipse для манипулирования кодом - PullRequest
6 голосов
/ 21 февраля 2012

Справочная информация

Я пишу программу, которая будет выполнять массовое переименование элементов и функций в каталоге исходного кода Java, чтобы де-обфускацировать код на основе файла .csv поисковой таблицы, переданного вк программе.

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


Проблема

Я нашел синтаксический анализатор Abstract Syntax Tree , встроенный в Eclipse, и он отлично подходит для моего использования, однако я не планирую писать свою программу в качестве плагина для Eclipse, это будет стендодин jar, который может быть запущен на любой машине.

Моя главная проблема в том, что когда я пишу свой код, я получаю много зависимостей от внутренних jar, которые использует Eclipse.Я знаю, что, если я соблюдаю EPL для библиотечных банок, у меня не возникнет проблем с его распространением, но я обеспокоен тем, что этот проект будет становиться все больше и больше, поскольку я пишу все больше и больше банок из SDK Eclipse.

Существуют ли какие-либо другие проекты, которые позволили бы мне проанализировать исходный код Java, чтобы найти и заменить его так, как мне позволяет AST, или есть способ использовать RetroGaurd (илитакая программа), чтобы запустить ту же де-обфускацию, но мои комментарии и функции остались прежними, без необходимости запускать де-запутанную программу через декомпилятор впоследствии?

1 Ответ

0 голосов
/ 05 октября 2013

Если вас беспокоит необходимость запуска Eclipse GUI для выполнения вашего кода, то вы можете рассмотреть возможность запуска плагина в режиме без головы.Это позволит запускать ваш плагин из командной строки.Смотрите этот SO поток .

Вы также можете использовать любой другой компилятор Java с открытым исходным кодом.Например, компилятор Java openjdk .Пожалуйста, обратитесь к разделу Ресурсы.

Надеюсь, это поможет.

...