Обфускаторы Java

Я ищу хороший обфускатор Java.

Я провел первоначальное исследование следующих обфускаторов Java: proguard, yguard, retroguard, dasho, allatori, jshrink, smokescreen, jobfuscate, marvin, jbco, jode, javaguard, jarg, joga, cafebabe, donquixote, mwobfu, bblassmaster , песочница, jcloak, чаща, blufuscator и защита кода Java.

Я попробовал proguard, и у него действительно хороший графический интерфейс, он кажется действительно стабильным и кажется самым популярным, но, похоже, ему не нравилось какое-то перечисление в указанном файле jar (не в коде, который я пытался запутать), что было странно . Игарду, кажется, требуется какое-то взаимодействие с муравьем, о котором я мало что знал.

Что такое хороший обфускатор Java? Он не должен быть бесплатным, он просто должен хорошо работать и быть простым в использовании.


person jbu    schedule 21.11.2008    source источник
comment
также важно: у меня довольно большой проект, который включает рефлексию и перечисление   -  person jbu    schedule 22.11.2008
comment
Не могли бы вы объяснить, зачем вам нужен обфускатор? Вы не можете получить хорошие трассировки стека, если запутаете его ...   -  person Pyrolistical    schedule 22.11.2008
comment
Мне нужен обфускатор, потому что проект, над которым я работаю, хочет защитить свой код от конкурентов.   -  person jbu    schedule 22.11.2008
comment
Вам также понадобится средство обфускации / сжатия, потому что оно часто делает ваш распространяемый JAR намного меньше.   -  person Lawrence Dol    schedule 07.10.2009
comment
см. мой обзор на stackoverflow.com/a/26717791/2132826   -  person taitelman    schedule 03.11.2014


Ответы (6)


Я активно использую ProGuard для всех своих сборок релизов и считаю, что это превосходно. Я не могу этого рекомендовать!

Я несколько раз сталкивался с неясными ошибками, вызванными его оптимизацией, и теперь я отключил оптимизацию по всем направлениям - с тех пор у меня не было проблем, вызванных ProGuard. Хотя, честно говоря, все это были довольно-таки какие-то версии назад - YMMV.

Раньше я использовал графический интерфейс только для запуска конфигурации, а затем я сам прибегал к редактированию текстовой конфигурации, что на самом деле очень просто. Сейчас я делаю конфиг вручную.

У меня довольно сложные проекты, все из которых включают динамическую загрузку и отражение. Я также активно использую отражение для реализации обратного вызова. ProGuard отлично с этим справился.

РЕДАКТИРОВАТЬ: Мы также используем DashO Pro для одного из наших продуктов - я изучил его для упаковки продуктов, за которые я отвечаю, и пришел к выводу, что его конфигурация была слишком запутанной и сложной; Кроме того, интеграция его в скрипт сборки казалась немного болезненной. Но опять же, если честно, это было примерно в 2001 году ... так что в текущих версиях это могло быть лучше.

person Lawrence Dol    schedule 22.11.2008
comment
Поддержка сценария сборки DashO включает как интерфейс командной строки, так и задачу Ant. - person Joe Kuemerle; 15.01.2009

Хорошая коллекция ссылок на бесплатные и коммерческие инструменты дана в этой статье.

«Защитите свой код Java - с помощью обфускаторов и не только»

Автор также обсуждает сильные и слабые стороны обфускации байт-кода.

person Community    schedule 12.11.2009
comment
+1 за ссылку на классную статью. - person asgs; 22.08.2012

В чем проблема с ProGuard? (что рекомендуется как этим вопросом, так и этот).

Есть раздел по устранению неполадок, связанный с перечислителем, но они, похоже, принимаются во внимание просто отлично.

Однако обфускация препятствует некоторым попыткам отражения, хотя современные обфускаторы могут обнаруживать и в некоторой степени настраивать использование отражения в коде, который они запутывают.

person VonC    schedule 21.11.2008
comment
Проблема в том, что приложение использует код во внешней банке, и я сохранил файлы, использующие перечисление, в моем собственном коде баночки, но во время выполнения у меня все еще возникают проблемы внутри кода внешней банки, который относится к перечислению. Я следил за поиском и устранением неисправностей Proguard, как мог. - person jbu; 22.11.2008
comment
У вас есть сообщения об ошибках, которые генерирует Proguard? - person VonC; 22.11.2008
comment
да, я разместил это как ответ в этой теме - person jbu; 22.11.2008
comment
привет, VonC, у меня проблемы с использованием proguard. У меня есть 3 файла классов, которые я упаковываю в одну банку (с манифестом). Теперь, когда я запускаю команду: java -jar myjar.jar @ myjar.pro, я ожидаю, что будет получен выходной файл, например myjar_out.jar, указанный в myjar.pro. Но эта команда запускает jar вместо создания выходного jar. - person Real Red.; 06.07.2009
comment
Согласно proguard.sourceforge.net/manual/usage.html, не так ли? предполагается набрать java -jar proguard.jar @myjar.pro? Потому что я могу подтвердить, что java -jar myjar.jar ... выполнит основной класс из myjar.jar. - person VonC; 06.07.2009
comment
Ах да ... плохо ... о чем я думал ... :-). Спасибо. - person Real Red.; 06.07.2009

Я использовал Zelix Klassmaster в коммерческом приложении в течение нескольких лет и нашел его превосходным. Я бросил довольно много ресурсов на обфусцированный код и не смог его "сломать". Дороговато, но хорошо.

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

Ваше здоровье,

-Ричард

person Huntrods    schedule 22.11.2008
comment
Я тоже этим давно пользуюсь. Это очень хорошо. Дополнительно доступен плагин IntellJ Idea. blogs.jetbrains.com/idea/2006/08/ < / а> - person OscarRyz; 06.02.2009

Мы пользуемся Zelix Klassmaster уже пару лет, и я могу его порекомендовать.

person FoxyBOA    schedule 27.11.2008
comment
согласен с тобой. см. также: stackoverflow.com/a/26717791/2132826 - person taitelman; 06.11.2014
comment
Можно ли также скрыть строку с двойными кавычками? в настоящее время мы используем proguard в android studio, но есть некоторые ограничения. поэтому ищем другой инструмент dexguard коммерческий, классмастер. - person harikrishnan; 22.02.2018
comment
Да, AFAIK. Никогда не встречал проблем со строками в двойных кавычках. - person FoxyBOA; 22.02.2018

Я использую и предлагаю Zelix - 100% - очень надежную и надежную защиту

person Ron Warshawsky    schedule 06.08.2012
comment
Можно ли также скрыть строку с двойными кавычками? в настоящее время мы используем proguard в android studio, но есть некоторые ограничения. поэтому ищем другой инструмент dexguard коммерческий, классмастер. - person harikrishnan; 22.02.2018