Я работаю в компании, торгующей программным обеспечением protected Java.
Я не буду комментировать схему аутентификации пользователей, но могу прокомментировать проверку онлайн-лицензии.
Не делайте это даже «работа в течение двух дней»: вот как я пиратствую большинство программных продуктов ... Виртуальная машина устанавливает «назад во времени» и внешне брандмауэром, чтобы она больше не «звонила домой» (то есть : только для того, чтобы он мог связаться с сервером один раз, чтобы получить пробный ключ), всегда пересматривался с момента, когда программное обеспечение было свеже установленным и бинго, 30-дневная пробная версия (или двухдневная пробная версия) стала пробной версией. Почему я это делаю? Чтобы узнать, как лучше защитить наше приложение, конечно;) (хорошо, хорошо, я делаю это просто для удовольствия тоже)
Что мы делаем в нашем коммерческом программном обеспечении Java - это проверить лицензию при каждом запуске.
У нас есть сотни клиентов, и никто никогда не говорил об этом. Ни разу. Мы генерируем уникальный класс при каждом запуске, который отличается при каждом запуске, что зависит как от уникальных для этого запуска на стороне клиента, так и от вещей, созданных один раз на стороне сервера.
В дополнение к тому, что приложение имеет контакт с вашим сервером при каждом запуске, это отличный способ собрать аналитику: скачать до пробного отношения, средние запуски nb за сеанс и т. д. И это не противно, чем иметь трекер Urchin / Google JavaScript на каждой веб-странице неприятно.
Просто дайте понять людям, что ваше программное обеспечение выполняет проверку онлайн-лицензии: мы включили или отключили огромный флажок: «Проверка онлайн-лицензии: OK / Failed». Вот и все. Люди знают, что есть чек. Если им это не нравится, они используют продукты с более низким конкурентом, а жизнь - хорошая. Р>
Люди привыкли жить в проводном мире.
Как часто вы можете not обращаться к GMail, потому что ваше интернет-соединение не работает? Как часто вы можете не обращаться к FaceBook или SO, потому что ваше интернет-соединение не работает?
Точка: сделать как можно больше вычислений в зависимости от сервера:
- проверка лицензии
- сохранить пользовательские настройки
- резервное копирование данных, созданных вашим приложением
- и др.
Никто не будет жаловаться. У вас будет 0.1% вашего пользователя, жалуются, и в любом случае вам не нужны эти пользователи: это тот, кто будет жаловаться на другие вещи и отправлять отрицательные отзывы о вашем приложении в Интернете. Лучше им вообще не использовать ваше программное обеспечение и жаловаться на то, что для него требуется постоянное подключение к Интернету (которое составляет 99,99% от вашей целевой демографии и, следовательно, они не будут заботиться о жалобе), а не используют их приложение и жаловаться на другие вещи, связанные с вашим приложением.
Что касается декомпиляции, .class обычно можно декомпилировать обратно в .java, если вы не используете обфускатор потока кода, который генерирует действительный байт-код, но который невозможно сгенерировать из .java-файла (следовательно, невозможно вернуть действительный .java).
Обфускатор String помогает усложнить его определение.
Обфускатор исходного кода помогает затруднить его определение.
Bytecode obfuscator, как и бесплатный Proguard, делает его более сложным (и создает более быстрый код, особенно заметный в мобильном мире), чтобы выяснить.
Если вы отправляете только Windows / Linux, тогда вы можете использовать конвертер Java-to-native, такой как Excelsior Jet (не бесплатный и дорогостоящий для стартапов, но он создает собственный код, из которого вы просто не можете найти .java-файлы).
Как забавная заметка, вы увидите, что люди пытаются запутаться со своим онлайн-сервером ... Около 30 бета-тестеров у нас уже были люди (которые мы знаем, где часть пробной версии) пытаются пиратствовать на наших онлайн-серверах. р>