Избегать запуска программного обеспечения после копирования на следующую машину?

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

Если кто-то скопирует его с моего клиентского компьютера и запустит на следующем компьютере, я хотел бы прекратить работу / запуск программного обеспечения.

Какие могут быть способы предотвращения пиратства моего программного обеспечения?

6 ответов

Решение

Адаптация одного из моих предыдущих ответов:

Есть несколько способов "активировать" скопированное программное обеспечение, чтобы попытаться остановить случайное копирование приложения.

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

Это приятно и просто, но крайне уязвимо для совместного использования ключей - поскольку "звонить домой" не удается, приложение не может знать, что тысячи разных людей используют один и тот же ключ, который они получили в Интернете, в последовательной библиотеке или у своего друга., Также достаточно легко создавать "кейгены", которые генерируют кажущиеся действительными ключи, которые фактически никогда не выпускались разработчиками.

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

Это все еще довольно легко и останавливает простой обмен ключами. Людям на самом деле придется взломать программное обеспечение или подделать ответ сервера, чтобы обойти его.

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

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

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

В этом случае, чтобы обойти активацию, они должны были бы подделать сам сервер. Эмуляторы Steam и частные серверы WoW являются примером этого. И, в конце концов, ничего не сломалось.

Как сказал Нико, ты действительно не можешь.

Простым решением может быть создание (регистрация / активация) кодов, основанных на аппаратном или программном обеспечении, установленном на конкретном компьютере, например, серийный идентификатор видеокарты или время создания c:/windows.

В двух словах: вы не можете.

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

Конечно, это тоже можно обойти, но...

У меня есть одна идея, может быть, это работает. Что мы можем сделать, мы создадим зашифрованное поле базы данных, и это поле будет пустым в первый раз, как только я установлю свое программное обеспечение на какой-либо компьютер, оно прочитает Mac-адрес + материнская плата Serial + ID процессора и сделает зашифрованное значение с комбинацией этих трех и запишите в это поле, которое я оставил пустым при первом использовании.

После этого каждый раз мое приложение будет читать эти три значения и воссоздавать инкапсулированное значение одним и тем же способом и сравнивать со значением этого поля базы данных. Если значение поля базы данных и значение сгенерированного зашифрованного поля равны, это означает, что компьютер такой же, но установлен на другом компьютере, в этом случае вы удаляете весь код и можете сделать систему нестабильной, чтобы наказать человек тоже:) ... Пожалуйста, дайте мне знать о вашем мнении об этой идее.

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

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

Если вы ищете готовую схему для этого, взгляните на CryptoLicensing.

Такие компании, как наша (Wibu-Systems), Safe-Net и Flexera (дорогие), предлагают решения без использования ключей, а также решения, основанные на аппаратном обеспечении. Но Симон был прав в том, что ключ - единственная железная защита. Все программные системы могут быть взломаны; просто некоторые из них сложнее других. Действительно хорошие аппаратные решения практически не поддаются взлому. Никто еще не взломал флешку CodeMeter, если реализация не была ошибочной.

Другие вопросы по тегам