Как создать пробную версию [закрытой] программы Java

17
задан Joachim Sauer 9 September 2011 в 07:25
поделиться

8 ответов

Я работаю над коммерческим программным обеспечением Java, и оно защищено.

Допустимо ли в вашем случае обязательное подключение к Интернету? В нашем случае наше программное обеспечение имеет смысл только при наличии подключения к Интернету, и, следовательно, мы можем сделать обратное проектирование невозможным, просто следуя этой мантре:

сделать достаточную часть вычислений на стороне сервера

Там ничего нет против этого злоумышленник может сделать помимо этого:

  • переписать часть вашего программного обеспечения, которая происходит на стороне сервера;

  • пиратство вашего сервера

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

Подумайте об этом так: никому не удавалось сыграть в битве от Blizzard.net с использованием поддельных / сгенерированных лицензионных ключей.

Конечно, пират мог попытаться подделать весь Battle.net, но тогда пиратская версия не позволяла людям играть, скажем, в реальной экономике WoW, или соревноваться в реальной лестнице Starcraft и т. Д.

Почему никому не удалось этого сделать: потому что Blizzard произвела достаточную часть вычислений на стороне сервера .

Достаточная часть вычислений, происходящих на стороне сервера, по сути означает: «пираты хороших игр» .

Чем больше мы движемся к миру, который всегда на связи, тем проще защищать приложения от пиратства. То же самое и с контентом (DRM), в лучшую или в худшую сторону.

4
ответ дан 30 November 2019 в 11:22
поделиться

Вот идея:

  1. Создайте базу данных (например, базу данных SQL Server), которая будет общедоступна в Интернете. В нем будет храниться список лицензионных ключей «пробной версии». Вы можете использовать ту же систему для лицензионных ключей полной версии при покупке продукта.

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

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

  4. Программное обеспечение перестает работать по истечении срока действия лицензии.

Стандартное программное обеспечение Windows может найти идентификатор процессора и использовать его как часть лицензии, так что на каждом компьютере можно запустить пробное программное обеспечение только один раз. Кто-нибудь знает, существует ли какой-то «идентификатор JVM», который можно использовать для этой цели?

Может быть, уже существует бесплатный или связанный с лицензией код с открытым исходным кодом?

{{1 }}
10
ответ дан 30 November 2019 в 11:22
поделиться

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

3
ответ дан 30 November 2019 в 11:22
поделиться

Раньше я успешно использовал True License . Имеет поддержку на пробный период. Используйте его в сочетании с инструментом обфускации, таким как ProGuard , и это определенно сделает его нетривиальным взломом.

2
ответ дан 30 November 2019 в 11:22
поделиться

Почему бы просто не ввести в пробную программу дату истечения срока действия, чтобы не продолжать ее поддерживать? Вы можете поместить это в main().

// Die after October 1, 2010
Calendar expireDate = Calendar.getInstance();
// January is 0 (y, m, d)
expireDate.set(2010, 9, 1);
// Get current date and compare
if (Calendar.getInstance().after(expireDate)) {
  // Die
  System.exit(0);
}

Именно так Microsoft распространяет свои крупномасштабные бета-версии программного обеспечения. Они просто указывают дату истечения срока действия.

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

6
ответ дан 30 November 2019 в 11:22
поделиться

Я бы сделал что-то очень простое и достаточно сложное, чтобы непрограммисты не смогли в этом разобраться.

Я бы сделал что-то вроде записи в файл количества миллисекунд, когда программа была впервые установлена в 64-битной длине в двоичном виде в файл. И пусть ваш главный класс проверяет и обеспечивает соблюдение лимита времени. Да, люди могут перевести часы, чтобы обойти это, но на самом деле вы все равно не хотите продавать товар таким людям. Также убедитесь, что текущее время строго соответствует 30 дням с момента установки. Большинство пользователей просто переводят часы на год назад, и это работает с большинством программ, потому что они просто выполнили простую проверку разницы. Вы также должны проверить, что разница в количестве дней от текущего времени до установки также больше 0.

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

4
ответ дан 30 November 2019 в 11:22
поделиться

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

Другими словами, вы можете ограничивать некоторых людей время от времени, но не всех людей все время.

4
ответ дан 30 November 2019 в 11:22
поделиться

Я рекомендую функциональные ограничения. У меня есть небольшая программа для заметок. Программа работает полностью, но в незарегистрированном режиме можно создать только 10 заметок. Поэтому я стараюсь хорошо относиться к пользователю. Никаких ограничений по дате, экранов ворчания или чего-то еще зла. Только небольшая строка состояния с текстом ограничения и кнопкой регистрации.

2
ответ дан 30 November 2019 в 11:22
поделиться
Другие вопросы по тегам:

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