Re: Защита ява-приложений
От: aefimov Россия
Дата: 30.05.07 14:15
Оценка: 20 (6)
Здравствуйте, Дмитрий Писаренко, Вы писали:

ДП>Я думал использовать obfuscator.


Из бесплатных proguard, из платных ZKM.

ДП>Возможно, имеет смысл вставить механизм проверки не только на старте, а во многих разных местах. Или запускать механизм проверки время от времени, через случайные интервалы времени.


Не надо ничего придумывать. Принцип простой. Прада ломается тоже на ура.
Берете и разбиваете ваш JAR на два — основное приложение и специальный класслоадер.

И ClassLoader и JAR основного приложения скремблируете так, чтобы имена классов пересекались, чтобы при декомпиляции были методы и поля с одинаковыми именами, чтобы все модификаторы менялись на private. Кароче, чтобы максимально обезопасить себя от перекомпиляции. Убирайте все строковые константы из ClassLoader — делайте из них byte[] и так храните в коде, напишите функцию, чтобы строки получались из byte[] в runtime -- это максимально затруднит поиск по строке "License Expiried" и т.п.

Класс лоадер имеет у себя открытый ключ (лучше хранить его также в byte[], причем использовать для него специальную скремблирующую функцию), точней часть ключа. Вторая часть защивается в лицензионный ключ, выдаваемый хорошему пользователю тайно. JAR шифруется по SHA алгоритму закрытым ключом. И грузится через этот ClassLoader. При совпадении ключей ClassLoader сможет расшифровать и загрузить классы из основного JAR.

Уезвимость одна. С хорошим ключом можно написать плохой ClassLoader который расшифрует вам JAR, дальше просто...

На 100% защитить практически невозможно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.