Действительно ли Запутанность кода Java является на самом деле эффективной по сравнению с декомпиляторами? [закрытый]

9
задан Zombies 11 February 2010 в 03:28
поделиться

6 ответов

Если ваш вопрос: "Могу ли я гарантировать, что никто не сможет взломать мой код", ответ будет НЕТ .. Находится ли он в JAVA или Visual C ++. Если ваше программное обеспечение, состоящее из байтов или битов, доступно хакеру напрямую.

ПРИЧИНА проста.

Как бы вы ни кодировали, это можно декодировать.

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

6
ответ дан 4 December 2019 в 07:47
поделиться

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

Однако есть альтернативы:

  1. Конвертируйте вашу java-программу в exe перед распространением. Вы должны знать, что здесь есть свои подвохи.

  2. Зашифруйте файлы классов с помощью ключа. Сделайте пользовательский загрузчик классов, который может декодировать файлы классов с помощью закрытого ключа перед загрузкой в память. Здесь есть две проблемы: а) увеличивается время загрузки, б) как вы спрячете закрытый ключ.

0
ответ дан 4 December 2019 в 07:47
поделиться

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

Что вы пытаетесь защитить и на какой рынок вы ориентируетесь?

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

Если вы пытаетесь защитить IP от конкуренции, я вижу два ответа. Идею будет сложно защитить. Опытный инженер, просматривающий код, поймет жемчужины логики и сможет реализовать ее заново. Из-за обфускации людям будет намного сложнее просто взять код и включить его в свой собственный продукт. Затраты на обслуживание будут продолжать расти по мере того, как они будут пытаться внести изменения (я бы сказал, что это также верно и для чисто декомпилированного кода).

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

5
ответ дан 4 December 2019 в 07:47
поделиться

Исходя из личного опыта декомпиляции Java, я могу сказать, что обфускация может сделать чьи-то попытки декомпиляции очень раздражающими и трудными. Больше всего меня раздражает, когда все файлы классов окончательной сборки называются «a.class, b.class, c.class» и так далее, и в них добавляется большое количество фиктивных элементов. С точки зрения обфускации кода, попробуйте / catches отлично справляется с испорченной работой декомпилятора.

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

3
ответ дан 4 December 2019 в 07:47
поделиться

достаточно ли эффективны обфускаторы классов Java для предотвращения декомпиляции?

Я бы сказал "нет". Когда я декомпилирую исходный код с целью выяснить, как кто-то что-то сделал, я уже знаю, что я ищу. Поэтому мне не нужно понимать всю программу - только ту часть, которая меня интересует в данный момент. Достаточно поразмыслить над методами и немного отступить вверх по цепочке вызовов, и обычно можно определить, что находится под капотом, без чрезмерных усилий.

12
ответ дан 4 December 2019 в 07:47
поделиться

«Достаточно эффективный» полностью зависит от того, насколько он вам нужен. А это зависит от того, что вы защищаете и от кого. Ни один из традиционных методов (обфускация, шифрование байт-кодов, компиляция в «exe») не остановит опытного и целеустремленного злоумышленника с достаточным временем и стимулом. Но это в значительной степени относится ко всем формам программирования. (Вы также можете дизассемблировать или декомпилировать приложения C / C ++ ...)

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

РЕДАКТИРОВАТЬ : Сообщается, что кому-то удалось взломать популярный чип TPM с помощью электронного микроскопа; см. эту статью Регистра . И что интересно, его изначальной мотивацией было взломать консоли Xbox 360!

2
ответ дан 4 December 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: