2009-09-03 4 views
5

Мы собираемся запутать наш проект, но не хотим потерять возможность удаленной отладки и hotswapping.Отладка java obfuscated code

Возможно ли это? Какие инструменты могут справиться с этим? Я был бы доволен простой обфускацией - просто переименовал бы классы/методы/переменные.

[Edited] Мы используем Intellij IDEA, но не смогли найти плагин для этой задачи.

ответ

5

У нас такие же потребности (простая обфускация, необходимость отладки позже) , и мы используем ProGuard. Это приложение Java, которое может быть интегрировано в задачу Ant.

Это может сделать много вещей, но это также полностью настраивается. Таким образом, вы можете сохранить свою обфускацию простой. Один из вариантов - создать «таблицу соответствия символов», которая позволяет извлекать неподтвержденный код из обфускации. (он отслеживает, что переменная xyz в классе qksdnqd является фактически myCuteVarName в классе MeaningfulClassName)

Редактировать: Обфускация может быть сложной задачей. Некоторые примеры:

  • Вы не можете изменить название основного метода.
  • Вы используете загрузчик классов? Может ли он получить класс после обфускации?
  • Как насчет вашего картографирования ORM? Ваш весенний контекст? (Если таковые имеются)

Edit2: Вы также можете увидеть:

+0

Да, я знаю о таблице SC. Но я и моя команда не являются тем гуру, которые могут легко отлаживать и изменять запутанный код даже с помощью таблицы. Поэтому я просто ищу инструмент, который позволит мне прозрачно отлаживать код. – Vitaly

+0

Вам не нужно быть гуру, вы предоставляете стол и запутанную банку для приложения, и они снова становятся читаемыми (минус комментарий). А ... но я не думаю, что вы можете «hotswaping» с этим процессом (это как удаление и замена всей банки) –

+0

Может быть, я что-то не понимаю. Смогу ли я «шаг за шагом» удаленно отлаживать запутанный код и видеть «нормальный» код в одно и то же время в каком-то отладчике (без каких-либо дополнительных действий, таких как просмотр таблицы, запуск других приложений и т. Д.)? – Vitaly

0

См SD Java Obfuscator. Он разделяет комментарии и пробелы и переименовывает все имена пользователей/методов/классов, которые не являются общедоступными.

Он также дает вам информацию о том, как код был запутан, например, для каждого символа FOO, запутанного как XYZ, карты FOO-> XYZ. Это означает, что если вы получаете обратную трассировку с упоминанием XYZ, вы можете легко определить исходный символ FOO. Конечно, поскольку только вы (человек, делающий обфускацию) имеют эту карту, только вы можете это сделать.

 Смежные вопросы

  • Нет связанных вопросов^_^