Обфускаторы Java с поддержкой плагинов Maven - PullRequest
1 голос
/ 30 июня 2011

Я ищу обфускатор Java с поддержкой плагинов maven? Мы попытались использовать ProGuard, но столкнулись с некоторыми проблемами во время выполнения, которые не произойдут, если вы не запутаете. Есть ли альтернативные обфускаторы.

Ответы [ 3 ]

5 голосов
/ 30 июня 2011

Поскольку ProGuard работает аналогично большинству других Java-обфускаторов (по крайней мере, с теми, с которыми я знаком), вполне вероятно, что вы столкнетесь с подобными проблемами.(На самом деле, ProGuard делает все возможное, чтобы выдавать совместимый байт-код, в то время как некоторые другие обфускаторы, по слухам, менее бдительны по этому поводу.)

Какие проблемы у вас возникли?Как правило, проблемы с использованием обфускации связаны с искажением имен - возникают проблемы с другими библиотеками, которые не могут найти общедоступные классы / методы / поля, или проблемы с использованием отражения.Это часто можно решить, очень внимательно следя за тем, какие имена классов и методов вы разрешаете искажать.

В последний раз, когда я использовал запутывание в проекте Java, мы были довольно консервативны в отношении того, что было запутано.Мы поместили классы, которые хотели обфусцировать, в подпакет их оригинального пакета, называемого «внутренним», и запутали только .internal. .Мы обнаружили, что это гораздо удобнее, чем пытаться определить, что не скрыть.

Еще одна проблема с обфускаторами - их оптимизация.Хотя я не видел ошибок в оптимизации в ProGuard, это, конечно, не невозможно.Несмотря на это, я отключаю это по нескольким причинам: во-первых, когда вы получаете (обфусцированный) трассировку стека для клиента, достаточно сложно разобрать имена, чтобы определить, что пошло не так.Если ваш обфускатор что-то оптимизировал, то трассировка стека, скорее всего, не имеет смысла.Во-вторых, в этом нет необходимости: JVM очень и очень хорошо оптимизирует байт-код, и это мешает этому (что может ухудшить ситуацию).

3 голосов
/ 16 мая 2012

Stringer Java Obfuscation Toolkit имеет большой набор параметров для интеграции с IDE и системой сборки, включая Maven .

0 голосов
/ 30 июня 2011

Несколько лет назад у меня была похожая проблема, чем у вас.Если я правильно помню, ProGuard неправильно оптимизировал короткий приватный метод: он пропускал эффекты «синхронизированного» мира ключей метода во время встраивания.

Мы исправляем эту проблему с помощью опции -dontoptimize ProGuard.

...