2012-03-09 3 views
2

Я хочу разработать способ предотвращения пиратства моего приложения или, по крайней мере, сделать его более сложным. Приложение будет установлено на автономном ПК, и я хочу, чтобы человеку было сложно просто скопировать установку или клонировать жесткий диск и просто развернуть ее на втором ПК. Использует MAC-адрес наилучшим образом? Как насчет использования WMI для получения идентификатора материнской платы?Блокировка приложения Java на конкретном ПК

+6

вы уже потеряли ... –

+1

Насколько определяется/квалифицирован злоумышленник, которому нужно победить? Могут ли они перехватывать и переинтерпретировать системные вызовы, которые 'java.lang.Runtime' и' java.io. * 'используют для проверки таких вещей? Вам нужно беспокоиться о том, что приложение Java установлено на клонированные экземпляры VMWare, которые сообщают о тех же машинных идентификаторах? –

+0

Действительно ли ваше приложение стоит того, чтобы приложить усилия? Если это не так, зачем беспокоиться? Если это так, кто-то легко взломает его, и это ваши усилия потрачены впустую. – biziclop

ответ

1

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

Таким образом, вы можете активировать программу на основе уникального идентификатора на основе ПК. Однако нет простого способа вычислить уникальный идентификатор машины в JAva ... Если вы запускаете свое приложение только в Windows, вы можете прочитать некоторые другие аппаратные значения от WMI и микшировать (например, вы могли бы смешивать последовательный последовательный порт серии HD + MB + CPU Serial + Mac Address) в один ключ, это должно обеспечить лучшую защиту.

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

1

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

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

1

Нормальные java средства не существуют, насколько мне известно. Например, UUID, который обычно должен хешировать с использованием MAC-адреса, в реализации java не так. Что вы можете сделать, распространяет приложение через WebStart, обеспечивая регулярный механизм обновления и проверку лицензии.

Смежные вопросы