Лицензионный ключ подделывают тремя способами: генерируют валидные ключи кейгеном, публикуют один купленный ключ для всех и патчат программу, вырезая проверку. Защита от кейгена строится на асимметричной криптографии: ключи подписываются закрытым ключом, который никогда не попадает в программу. От массового использования одного номера защищает онлайн-активация с привязкой к устройству и учётом на сервере. От патчинга защищают обфускация и виртуализация кода проверки. В StarForce ProActive серийные номера генерируются и учитываются на сервере StarForce, а лицензия подтверждается двумя проверками: наличием номера и подлинностью привязки к компьютеру или флешке.
Три способа обхода лицензионного ключа
| Способ обхода | Что происходит | Механизм защиты |
|---|---|---|
| Кейген | Генерация валидных ключей по восстановленному алгоритму | Асимметричная криптография: закрытый ключ остаётся вне программы |
| Публикация одного номера | Один купленный ключ используют многие пользователи | Онлайн-активация, привязка к устройству, лимит активаций и учёт на сервере |
| Патч программы | Проверку лицензии вырезают из приложения | Обфускация и виртуализация кода проверки |
Главный вывод из таблицы: проверка «ключ соответствует формуле» без сервера и без защиты кода обходится всегда. Вопрос только во времени.
Почему контрольная сумма не защищает от кейгена
Многие разработчики начинают с простого: ключ содержит контрольную сумму, программа её пересчитывает. Такой алгоритм находится в отладчике за несколько часов, после чего кейген пишется за вечер. Даже «хитрые» формулы с XOR и перестановками не помогают: всё, что программа может проверить у себя, взломщик может воспроизвести. Как именно исследуют программы, мы подробно разбирали в статье о реверс-инжиниринге ПО.
Криптографическая подпись меняет ситуацию. Если ключ подписан закрытым ключом по алгоритму с открытым ключом (RSA, ECDSA или ГОСТ), в программе хранится только открытая часть. Сгенерировать новый валидный ключ без закрытой части невозможно, поэтому классический кейген становится бессмысленным. Но остаются утечка и патч.
Шесть уровней защиты лицензионного ключа
| Уровень | Механизм | Назначение |
|---|---|---|
| 1. Криптографическая подпись | Подпись закрытым ключом; в приложении — открытый ключ | Проверка подлинности и защита от генерации новых валидных ключей |
| 2. Генерация и учёт на сервере | Серийные номера создаются вне программы и учитываются на сервере лицензий | Централизованное управление выданными номерами |
| 3. Онлайн-активация | Сверка номера и ограничений лицензии с сервером | Контроль действительности лицензии и лимита активаций |
| 4. Привязка к устройству | Сравнение параметров компьютера или ключа на флешке | Ограничение использования номера на других устройствах |
| 5. Защита кода проверки | Обфускация, виртуализация, защита функций и внутренних переменных | Усложнение поиска и удаления проверки лицензии |
| 6. Управление выданными лицензиями | Чёрный список и изменение параметров номера или партии | Блокировка утёкших номеров, изменение срока и числа запусков |
Надёжная схема использует все шесть уровней. Если пропустить пятый, взломщику не нужно подделывать ключ: он уберёт проверку целиком.
Как работает защита ключей в StarForce ProActive
В StarForce ProActive серийный номер генерируется на сервере управления лицензиями StarForce, а не в программе. При первом запуске пользователь активирует номер, параметры компьютера прикрепляются к номеру и фиксируются на сервере. Защищённое приложение работает, только если подтверждены две проверки: есть действующая лицензия с соблюдёнными ограничениями, и привязка подлинна (номер соответствует параметрам этого компьютера или ключу на флешке).
Повторная активация того же номера на другом ПК упирается в лимит активаций. Опубликованный номер издатель заносит в чёрный список, а параметры любого номера или целой партии (срок, число запусков) можно отредактировать. Код самого приложения защищается трансформацией в команды виртуальной машины, защитой функций и внутренних переменных, поэтому найти и вырезать проверку значительно сложнее. Подробнее о модели «код плюс лицензия» читайте на странице защиты программ и игр.
Когда нужна обфускация исходного кода
Если продукт защищает ключи для стандартных DRM (например, ключи устройств для аудио- и видеопотоков), критичный код имеет смысл обфусцировать на уровне исходников. Для C/C++ это делает StarForce C++ Obfuscator, методы которого мы разбираем в отдельной статье об обфускации кода C/C++.
Как связать защиту ключа с моделью лицензирования
Защита ключа неотделима от того, как вы продаёте программу. Триал, подписка, ограничение запусков и продление реализуются через параметры серийного номера, поэтому выбирать механизм ключей лучше вместе с моделью лицензирования. Об онлайн- и офлайн-активации мы рассказываем в отдельной статье, а обзор возможностей есть на странице DRM для защиты программ и файлов.
Бесплатный пилот и анализ защиты
Запросите бесплатный пилот StarForce ProActive: защиту и активацию можно проверить на своей программе до покупки. Если нужно оценить текущую схему ключей, специалисты StarForce проведут анализ защиты, выполненной вашей командой, или установят защиту под ключ. Оставить заявку можно по телефону +7 (495) 967-14-50 или через страницу контактов.

