![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
DOKA |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 13.8.2006 Репутация: нет Всего: нет |
Добрый вечер!
Использую YGuard для обфускации Java-приложения. Пока оно прилоежния, то проблем нет - выполняю задачу Rename для всего кроме имён пакетов (чтобы пути к картинкам работали) и главного класса. А вот когда я компилирую то же самое, но в виде библиотеки, мне нужно ещё и имена классов сохранить. Как это сделать при помощи YGuard+Ant? Исключение файлов из задачи <rename> приводит к тому, что класс и внутри не обфусцируется. И вообще - почему такая засада с обфускацией в Java? Замучался уже. Неужели нет ещё в природе обфускатора, который может вменяемо САМ перемешать код, не поломав программу? Как по мне, это же тривиальная задача, не требующая тех 15 строк кода в ant'e, которые я писал для своей программы, и отладки. |
|||
|
||||
mstalker26 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 4.7.2009 Репутация: 3 Всего: 11 |
Перечисления тоже нужно исключать и если что-то с reflection используете. Нельзя обфусцироваь абсолютно все.
Мы yGuard на работе используем, единственное, что меня расстраивает, отсутствие плагина для maven. На моё письмо ответили, что не планируют его делать. --------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом. |
|||
|
||||
DOKA |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 13.8.2006 Репутация: нет Всего: нет |
Перечисления по старинке не использую, предпочитаю int-костанты. Reflections - тоже. По-моему, весьма типичный use case. Пока в голову приходит лишь вытащить всё API библиотеки в один класс типа Obfuscated.class, где ещё на момент написания ф-ии будут называться A, B, C, etc.. Я просто не могу не обфусцировать этот код, т. к. он влияет на проверку лицензий. Как мне кажется, это очень напоминает весьма корявые костыли. Было бы идеологически правильно, при обфускации либы создавать файл с маппингами "исходное имя сущности -- обфусцировнное имя сущности" и подсовывать его при обфускации кода, использующего эту библиотеку. Но такого ни в одном обфускаторе не реализовано, не так ли? |
|||
|
||||
mstalker26 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 4.7.2009 Репутация: 3 Всего: 11 |
стоп-стоп-стоп.
Если я правильно понял у Вас есть проект, зависящий от библиотеки (она тоже Ваш проект). Назовем их project и commons. Когда Вы компилируете и упаковываете commons, то обфусцировать не надо. А когда Вы упаковываете project, то надо обфусцировать и project и commons. В yGuard это
Если неправильно понял, то расшифровывайте и опишите процесс, что делаете ![]() edit: или Вы все библиотеки обфусцируете? Это сообщение отредактировал(а) mstalker26 - 21.12.2011, 16:52 --------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом. |
|||
|
||||
DOKA |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 13.8.2006 Репутация: нет Всего: нет |
По-моему, это как раз и будет решением, раз YGuard позволяет связно обфусцировать два Jar'a. Но тут проблема встаёт, это же Eclipse plugin у меня. И commons будет запакована внутрь project. Такое YGuard не поддерживает? А может, заодно подскажете, как при сборке репозитория Eclipse плагина (он и есть мой project) заставить вызываться Ant-скрипт проекта плагина? Грубо говоря структура такая: - Repo <-- сборка идёт по нажатию Build All в GUI - Feature - Plugin <-- здесь будет ant-файл - Commons <-- уже собран предварительно Нет, можно, конечно и вручную обфускацию запускать... Но это не совсем правильно, как мне кажется. |
||||
|
|||||
mstalker26 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 4.7.2009 Репутация: 3 Всего: 11 |
Я бы сделал так:
1) завел бы ant-task для обфускации, который зависит от task "jar". 2) commons я бы не запаковывал внутрь project (т.е. jar в jar). 3) ну а выпускать production версию плагина, то собирал бы из консоли, а не из GUI. Теперь вопросы: 1) я так понимаю, что собираете Вы проект из GUI? Я бы собирал (для выпуска релизов) из консоли с помощью ant, так Ваш проект будет более "гибким" (не могу перевести flexibel ![]() 2) пытались привязать ant-файл с обфускацией к Run - External Tool в eclipse? (но это на крайний случай) edit: кстати, для rename и shrink в yGuard можно задать аттрибут logfile, чтобы сохранить маппинг, что наделал yGuard. Это сообщение отредактировал(а) mstalker26 - 22.12.2011, 13:53 --------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом. |
|||
|
||||
DOKA |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 13.8.2006 Репутация: нет Всего: нет |
Спасибо за ответы. Видимо проще будет собирать так, как сделано, а потом делать unjar - obfuscate - jar через ant.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java tools & IDE's | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |