Принципы защиты
Ясный стандарт: повышать цену полезного восстановления и сохранять качество продукта.
Ценность и цель защиты#
Политика начинается с активов, потеря которых нанесёт ущерб: собственного алгоритма, бизнес-правила, проверки лицензии или преимущества новой функции. Им не нужна одинаковая обработка. До выбора профиля определите чувствительные методы и период, в течение которого важна их конфиденциальность.
Цель состоит в увеличении затрат на полезное восстановление логики и снижении вашего риска. В идеале стоимость атаки превышает ожидаемую выгоду. Это ориентир модели угроз, а не гарантированный экономический результат: ресурсы, мотивация и доступ атакующего различаются.
Учитывайте доступ к артефакту#
Атакующий может получить JAR, сравнивать релизы, исследовать байткод, подключать отладчик и наблюдать контролируемый процесс. Виртуализация меняет представление исполнения, а нативная компиляция выносит выбранную логику из обычных тел методов JVM. Ни один подход не исключает исследование поведения во время работы.
Несколько уровней анализа#
Слои закрывают разные короткие пути. Переименование уменьшает смысловые подсказки. Защита констант меняет представление и восстановление значений. Преобразования потока усложняют прямое восстановление. Выборочная виртуализация или нативная компиляция глубже меняет представление важных методов. Ценность создаёт подходящее сочетание, а не включение всех опций повсюду.
Выберите этап для просмотра его роли. Схема описывает обязанности, а не внутреннюю реализацию.
Политика начинается с активов, потеря которых нанесёт ущерб: собственного алгоритма, бизнес-правила, проверки лицензии или преимущества новой функции. Им не нужна одинаковая обработка. До выбора профиля определите чувствительные методы и период, в течение которого важна их конфиденциальность.
Атакующий может получить JAR, сравнивать релизы, исследовать байткод, подключать отладчик и наблюдать контролируемый процесс. Виртуализация меняет представление исполнения, а нативная компиляция выносит выбранную логику из обычных тел методов JVM. Ни один подход не исключает исследование поведения во время работы.
Слои закрывают разные короткие пути. Переименование уменьшает смысловые подсказки. Защита констант меняет представление и восстановление значений. Преобразования потока усложняют прямое восстановление. Выборочная виртуализация или нативная компиляция глубже меняет представление важных методов. Ценность создаёт подходящее сочетание, а не включение всех опций повсюду.
Снимок декомпилятора является наблюдением одного инструмента. Он не доказывает стойкость против любого аналитика или корректность исполнения. Проверяйте конкретную защищённую сборку: сравнивайте поведение с оригиналом, исследуйте чувствительные методы, измеряйте запуск и установившийся режим, сохраняйте профиль и идентификатор. Повторяйте проверку при изменении зависимостей, целевой JVM или политики.
Проверяйте выпускаемый артефакт#
Снимок декомпилятора является наблюдением одного инструмента. Он не доказывает стойкость против любого аналитика или корректность исполнения. Проверяйте конкретную защищённую сборку: сравнивайте поведение с оригиналом, исследуйте чувствительные методы, измеряйте запуск и установившийся режим, сохраняйте профиль и идентификатор. Повторяйте проверку при изменении зависимостей, целевой JVM или политики.