Я думаю о внедрении хорошего механизма лицензирования, который будет хорошо защищать от пиратства. Требуемый механизм не должен использовать подключение к Интернету каждый раз, когда используется программное обеспечение. Я думаю о механизме, основанном на идентификаторах оборудования и т. Д. Есть ли у вас какие-нибудь предложения получше? Какие параметры / алгоритмы / характеристики мне нужно учитывать, чтобы создать механизм лицензирования с защитой от взлома?
Внедрение механизма лицензирования для программного обеспечения
Ответы (6)
Во-первых, ничто не защищено от взлома, поэтому я бы не стал тратить слишком много времени на защиту вашего программного обеспечения.
Обратной стороной механизма, основанного на идентификаторах оборудования, является то, что когда пользователь покупает новый компьютер или обновляет большую часть своего компьютера, ему также необходимо обновить ключ. HWHash - довольно хорошая реализация HardwareID, но я думаю, что есть и другие (бесплатные) решения. strike> На работе мы используем ключи Hardlock и Hasp, но это решения usbkey, которые не очень эффективен для небольших приложений.
В идеале вам нужно что-то независимое от ОС.
Я бы порекомендовал вам встроить лицензионную защиту в свой код или обернуть свое приложение в него таким образом, чтобы его нельзя было запустить без запуска кода защиты от копирования.
Было бы лучше, если бы вашему приложению для работы необходим файл лицензионного ключа, который не генерируется локально.
Один из способов сделать это состоит в том, что ваше приложение генерирует некоторую форму кода изображения на основе оборудования при его первоначальном запуске. Он предоставляется вам, а взамен вы предоставляете лицензионный ключ, который позволит запускать код. Лучше всего строить образ оборудования на основе процессора и материнской платы, так как они будут меняться реже всего.
Ваше приложение. при каждом запуске следует сверяться с образом оборудования и лицензионным ключом.
Если вы хотите, чтобы ваше приложение. срок действия лицензии ограничен, тогда он также должен отслеживать, как долго он работает, и вставлять его в файл лицензионного ключа.
Не забудьте зашифровать файл лицензии.
Также не забудьте усложнить обратную компиляцию вашего исполняемого файла с помощью dotfuscator или подобного.
Отметьте этот вопрос: Какой метод защиты от копирования вы используете?
Здесь также есть ссылки на другие связанные вопросы.
Я думаю о внедрении хорошего механизма лицензирования, который будет хорошо защищать от пиратства. Требуемый механизм не должен использовать подключение к Интернету каждый раз, когда используется программное обеспечение.
Тогда как насчет периодической онлайн-проверки лицензии?
Когда пользователь входит в систему в первый раз, пользователь проверяет установку, используя свою учетную запись, и файл лицензии сохраняется на компьютере пользователя. Этот файл лицензии зашифрован и содержит все данные, необходимые для однозначной идентификации лицензии. Все это хранится на вашем сервере.
Срок действия файла лицензии истекает через определенное количество дней или даже месяцев. Вход в систему после истечения срока действия файла проверяет учетную запись и подтверждает ее легитимность. Вы можете даже подумать о создании нового файла лицензии в это время.
Должны быть некоторые умения, которые дадут некоторую свободу действий в случае, если Интернет пользователя не работает и лицензию нельзя зарегистрировать. Возможно 7 дней.
Если программное обеспечение переустанавливается на новый компьютер, пользователь должен повторить процесс проверки.
Как утверждали другие, невозможно победить решительного пирата, поскольку такой человек взломает код, но это должно предотвратить или замедлить случайное пиратство.
Вы можете проверить Microsoft SLP - я не использовал его, но это определенно выглядит интересно (знаете, ЕСЛИ вы увлекаетесь вещами MS ...)
Следует отметить один важный момент: никакой механизм лицензирования не защитит вас от пиратства или даже существенно его снизит. По определению, механизм лицензирования будет на стороне клиента, что по своей природе взломано. Взгляните на все, что произошло с DRM ...
Поэтому вашим ориентиром должно быть удобство использования - намерение должно заключаться в том, чтобы использовать его в качестве общей политики, хорошие парни будут комфортно ограничены тем, что им разрешено делать, а плохие парни - Что ж, плохие парни все равно обойдут ваше намерение, ваша лучшая надежда - заставить его работать больше.
Я бы очень осторожно отнесся к опубликованным механизмам защиты программного обеспечения, так как они с гораздо большей вероятностью могут иметь опубликованные хаки. Вероятно, вам лучше использовать некоторые методы, чтобы получить уникальный постоянный идентификатор и использовать его для развертывания собственного механизма защиты. Я также считаю, что просто проверять лицензию всякий раз, когда вы запускаете программу, - плохая идея, поскольку это приводит хакера к местонахождению вашего механизма защиты. IMO, вам лучше проверять лицензию более случайным образом и более одного раза за сеанс.
FWIW, я использую аппаратные блокировки (засов) для своего высокопроизводительного программного обеспечения для настольных ПК и лицензирование на основе идентификатора устройства для мобильных решений. Если вы продаете небольшое количество дорогостоящего программного обеспечения на вертикальном рынке, IMHO, хороший механизм защиты лицензий имеет смысл, и аппаратные ключи работают хорошо. По моему опыту, люди будут использовать больше лицензий, чем покупают, если их нет. Для массового и недорогого программного обеспечения я бы предпочел жить с пиратством, основанным на увеличении размера пользовательской базы и видимости продукта.