Ни один из этих ответов не работал для меня. Моя проблема вызвана JUnit и Hamcrest. См. Также java.lang.IllegalArgumentException: уже добавлено: Lorg / hamcrest / BaseDescription; Преобразование в формат Dalvik не удалось с ошибкой 1
Он замедляет (но не останавливает те, которые определены) от обратного проектирования вашего кода.
Обфускация не сможет победить решительного хакера или защитить ваш совершенно секретный алгоритм, но в большинстве случаев дело не в этом. Традиционно требовалось только быть достаточно хорошим, чтобы заставить компанию платить за поддержку и обновления программного обеспечения, а не предпринимать усилия по деобфускации и поддержке самого программного обеспечения.
Впервые я столкнулся с обфускацией в первые дни Unix, когда большинство C программы приходилось доставлять в исходной форме из-за обилия различных архитектур ЦП и отсутствия умных компоновщиков или общих форматов объектных файлов.
С появлением интерпретируемых языков запутывание теперь, вероятно, больше, чем когда-либо, используется для коммерческого программного обеспечения
. 1125078]
Я использовал обфускацию кода в реальном проекте . Я разработал корпоративное программное обеспечение (сервлеты Java). В сервлетах скомпилированные классы ДОЛЖНЫ находиться на сервере для работы (файлы WAR / JAR). В большинстве случаев они размещаются на серверах, которые я могу а) контролировать или б) доверять операторам.
Однако один клиент настоял на том, чтобы приложение размещалось на ИХ сервере для использования в «интрасети». Поскольку у клиента была история «менее звездной» этики, я принял меры предосторожности и сначала запустил скомпилированную Java через обфускатор. Я также довольно хорошо протестировал результат, чтобы убедиться, что декомпилированный код в значительной степени непригоден для использования.
Вы можете спросить: «Зачем иметь дело с таким клиентом?», но общий маркетинг этого конкретного приложения был вне моего контроля, хотя никаких проблем с безопасностью не было. Это было лучшее компромиссное решение для частного случая
Cheers,
-R
В качестве конкретного примера взгляните на сценарий, стоящий за gmail. Это запутано прежде всего для того, чтобы помешать предприимчивым хакерам создать альтернативный интерфейс, который общается с серверами Gmail.
Второстепенным, хотя и важным, преимуществом является уменьшение размера скрипта.
Наиболее важное использование - уменьшение размера. Я всегда использую его в Javascript и в Java-приложениях для мобильных телефонов (j2me).
Некоторые обфускаторы также могут выполнять небольшую оптимизацию.
Обфускация кода обычно применяется к интерпретируемым языкам, таким как php, где исходный код не компилируется и должен быть распространен на конечный пользователь. На самом деле обфускацию можно взломать, и я использую ее только для того, чтобы честные люди оставались честными. Знаете, легче что-то взломать, чем достать кредитную карту.
Это может замедлить злонамеренных хакеров, пытающихся пиратским способом или иным образом модифицировать ваше программное обеспечение несанкционированным или нежелательным образом. Не сильно, но если вы беспокоитесь о дате выпуска на улице, несколько дней или часов могут иметь значение.
Это неэтично, но наличие критически важного кода, который понимаете только вы, - это один из способов, которым некоторые программисты гарантируют, что их безопасность работы.
Прочтите здесь
Цель обфускации - создать спутанность сознания. По мере нарастания путаницы способность человеческого разума к постигать многогранный интеллектуальный концепции ухудшаются. Обратите внимание, что это заповедь ничего не говорит об изменении прямая (исполняемая) логика - только представляя это непонятно. когда хорошо написанный инструмент обфускатора идет в работать по читаемым программным инструкциям, вероятным побочным эффектом является то, что вывод не только запутает человека переводчик, это сломает декомпилятор.
Допустим, у вас есть контракт с компанией на производство некоторого программного обеспечения. С ними сложно работать, и они фактически превратили вашу жизнь в ад. Часть контракта гласит, что после завершения проекта вы должны передать весь исходный код ...: D
Обфускация кода стала популярной примерно в то время, когда был впервые выпущен Perl. Это действительно был артефакт повышения эффективности кода. В те давние времена между устоявшимся сообществом программистов «c» и сторонниками «ренегата» Perl шла своего рода пламенная война. Ребята из старой школы c явно превзошли ребят из Perl по производительности. В ответ перлеры (?) Начали придумывать хаки производительности без оглядки на читаемость. Следовательно, обфускация. В этом, конечно же, больше нет необходимости, так как перлеры (?) Давным-давно уступили в исполнении the c'ers (мило, да?). Обфускация НИКОГДА не использовалась в целях безопасности, которые я видел. Фактически, если вы предложите это в качестве меры безопасности, люди высмеют вас из комнаты. Хакеры, пытающиеся обойти систему безопасности, в целом очень хорошо осведомлены о языках и наборах инструментов, на которые они нацелены. Вот что делает их такими успешными. Обфускация ни в коем случае не является защитой от них.
Если вы запускаете приложение, логика которого ясна, тогда обфускация может в некоторой степени предотвратить дословное извлечение конкурентами вашей логики .
Когда вы являетесь новый сайт, может быть важно победить толпу "я тоже".
Но предотвращение слабое и не стоит тратить время ИМХО.
Мы продаем обуфускаторы людям, разрабатывающим схемы на VHDL и Verilog. Поскольку такие конструкции, как правило, довольно большие, есть что скрыть (часто десятки тысяч строк), и попытка реконструировать их чрезвычайно сложно.
Обфускация кода имеет ограниченное коммерческое применение. Однако это может помочь уникальным образом отточить инструментарий разработчиков. Обфусцированный код служит крайним противовесом для очистки хорошо документированного дизайна кода.