запутывание Java-приложений - PullRequest
0 голосов
/ 05 января 2010

Насколько я понимаю, запутывание java-приложения только затруднит чтение вашего приложения, но обратный инжиниринг все еще возможен.

Моя цель состоит в том, чтобы сделать его очень трудным для чтения и не иметь возможности декомпилировать и запускать (не уверен, если это возможно, я думаю, он все равно будет работать только с безобразными именами переменных ??)

Таким образом, имена переменных, такие как:

String username = "asdfsadf";

станет

String aw34Asdf234jkasdjl_asdf2343 = "asdfsdaf";

Правильно ли это:

  1. публичные классы и переменные останутся без изменений
  2. ТОЛЬКО приватные строки / классы / методы могут быть переименованы
  3. Шифрование строки может использоваться для некоторых конфиденциальных строковых данных, таких как ключи шифрования и т. Д.

На самом деле моя цель - чтобы кто-то не смог просто декомпилировать и выпустить код.

Ответы [ 6 ]

5 голосов
/ 03 июля 2010

Веб-приложения работают на стороне сервера. Клиенты не увидят код, если вы не напутаете.

3 голосов
/ 05 января 2010

Есть много хороших Java-обфускаторов, которые сделают то, что вы говорите, и многое другое. Вот некоторые из Google:

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

2 голосов
/ 05 января 2010

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

(http://www.program -transformation.org / Transform / JavaDecompilers # Java_Bytecode_Decompilers )

Что вам нужно сделать, так это сохранить проприетарную часть программного обеспечения в таком месте, чтобы ваши пираты не смогли его увидеть. Насколько мне известно, это ЕДИНСТВЕННЫЙ способ избежать взлома вашего программного обеспечения.

1 голос
/ 05 января 2010

Вы не можете предотвратить декомпиляцию и запуск Java-кода.Даже если это запутано, могут быть люди, которые все еще могут понять, что делает ваш код, несмотря на запутывание. Все, что вы публикуете, может быть реверс-инжиниринг.

В других языках предпринимаются даже гораздо более активные усилия по предотвращению декомпиляции и отладки, например, решения по защите дисков от копирования, и даже они получают реинжиниринг и взламываютсячасто.

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

0 голосов
/ 25 сентября 2014

Никакая обфускация не сможет защитить вас от «декомпиляции и повторной компиляции» (без попытки понять, что делает код).Декомпиляторы не заботятся ни о нечитаемых именах переменных, ни компиляторах.

Кстати, если у кого-то есть доступ к вашему коду, ему не нужно декомпилировать его, чтобы использовать его.

Так чтовопрос действительно: чего вы хотите достичь?Когда вы это знаете, вы можете перейти к следующему вопросу: сколько это стоит и сколько денег я могу заработать?

Обычно это уравнение таково: вы не можете сэкономить / заработать деньги на запутывании, ноделать это стоит времени и денег (хорошие обфускаторы не бесплатны).Так что это отрицательная рентабельность инвестиций.

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

Если вы планируете получать деньги от воров и преступников, ну, забудьте об этом.Они не хотят платить тебе, несмотря ни на что.Вы можете сделать их жизнь немного сложнее, но за это придется заплатить.

0 голосов
/ 23 августа 2013

http://www.excelsior -usa.com / защита-Java-веб-applications.html

Отказ от ответственности: я работаю на Excelsior.

http://www.arxan.com/products/server/guardit-for-java/

Отказ от ответственности: я не работаю на Arxan.

...