Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/50: Рейтинг темы: голосов - 50, средняя оценка - 4.86
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930

Способ защиты лицензии программы

17.04.2015, 14:12. Показов 9599. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Стоит следующая задача:
Есть программный продукт написанный на .Net 4.
Продажа предполагается по 1 экз. на 1 заказчика.
Необходимо предусмотреть способ защиты от использования копий программы.
Предполагается вариант с ключём, генерируемым программой на основе серийника(?) материнки и процессора ПК, на котором впервые запускается программа. Этот ключ отсылается разработчикам, в ответ приходит лицензионный ключ, с которым программа работает. Стоит заметить, что компьютер вполне может не иметь доступ в сеть, по этому возможность авторизации программы у разработчика при запуске не рассматривается.
Сейчас неважен алгоритм по которому генерируются ключи. Важен сам подход.
Я вижу следующие проблемы данного подхода:
1) При замене железа (например, при выходе из строя или после апгрейда) программа перестаёт работать. Решение - повторный запрос ключа у разработчиков
2) Исходя из первого пункта есть возможность мухлежа. Поскольку разработчики не могут лично проверить действительно ли произведён апгейд первого ПК, или держатели скопипастили программу на другую машину.

Поскольку этот метод защиты - первое, что пришло в голову при постановке задачи, предполагаю, что есть более надёжные варианты. Буду благодарен за идеи.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.04.2015, 14:12
Ответы с готовыми решениями:

Созданиец лицензии программы
У меня вставл вопрос как можно обезопасить свою программу лицензионным ключем, да так чтобы избижать копирование ключа и программы на...

Как использовать ID для защиты программы?
Каждый компьютер имеет свой уникальный номер сетевой карты (ID), который, в принципе, можно использовать в качестве серийного номера,...

Создание процесса из программы для защиты основного от несанкционированного завершения
Решил написать для своей программы систему защиты от убийства процесса. Хочу создавать из программы процесс, который будет следить за...

30
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
17.04.2015, 14:54
Цитата Сообщение от aquaMakc Посмотреть сообщение
1) При замене железа (например, при выходе из строя или после апгрейда) программа перестаёт работать.
Встречный контрвопрос - у вас часто летит железо? У меня - очень редко.
Цитата Сообщение от aquaMakc Посмотреть сообщение
2) Исходя из первого пункта есть возможность мухлежа.
При продаже обозначать количество (максимальное), допустимое для передаче одному покупателю лицензии (две или три, не больше). Пусть будут внимательнее к своему железу.
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
17.04.2015, 14:58  [ТС]
insite2012, лицензия 1 на 1 покупателя (такая особенность программы, больше не надо). Но, опять таки-из-за специфики покупатели и потенциальные покупатели вполне могут быть знакомы и по дружбе могут злостно нарушить копирайт. Предыдущая версия защищалась поставкой usb-ключа, но с ними был определённый геморой и было решено, что это уже не наш метод. Вот и изыскиваем более тонкий подход.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
17.04.2015, 15:05
Цитата Сообщение от aquaMakc Посмотреть сообщение
Вот и изыскиваем более тонкий подход.
Ну, для начала, если вы цените клиентов, то в любом случае должны предоставить гарантии, что в случае поломки железа ключ будет предоставлен заново. Так что, возможность, как вы выразились, мухлежа сохраняется.
Ведите базу клиентов, отслеживайте, кто купил лицензию. Естественно, будут и потери, но с этим надо смириться, если такие гиганты как мелкомягкие мирятся))) Тут главное тонко поймать грань между стоимостью программы и ее полезностью, чтобы купить лицензию, пользоваться и (если будут обновления) получать их, или просто смухлевать, но без каких-либо гарантий.
Могу сказать по своему опыту, я именно так и делаю. Может, кто-то и сломал мою программу, но пока я об этом не слышал. Кто хочет - покупает и впоследствии получает более свежую версию абсолютно бесплатно.
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
17.04.2015, 15:14  [ТС]
Специфика программы практически не предусматривает обновлений. Предыдущая версия больше 10 лет работала без существенных изменений. Да и объёмы продаж далеко не от дяди Билла, чтобы можно было мириться даже с единичными случаями мухлежа.
Как я понял пока ничего лучше, чем жёсткая привязка к железу цивилизация не придумала?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
17.04.2015, 15:19
Цитата Сообщение от aquaMakc Посмотреть сообщение
Да и объёмы продаж далеко не от дяди Билла
У меня тоже не большие, но хотите вы того или нет - мириться придется.
Цитата Сообщение от aquaMakc Посмотреть сообщение
пока ничего лучше, чем жёсткая привязка к железу цивилизация не придумала?
Я лучшего способа, не завязанного на наличие сети и так далее не знаю. Можно, конечно, поизмудряться и усложнить работу взломщику. Например, сделать установочный пакет, который установит собственно программу (где только оболочка) и установит на целевую машину службу, которая и будет являться собственно логикой работы. Но опять же, это только усложнение, сам принцип защиты останется тем же.
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
17.04.2015, 15:23  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
который установит собственно программу (где только оболочка) и установит на целевую машину службу, которая и будет являться собственно логикой работы
) ну собственно в таком виде программа и поставляется.
Но для грамотного инженера (наша основная ЦА) установка службы - рутинное дело.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
17.04.2015, 15:29
Цитата Сообщение от aquaMakc Посмотреть сообщение
для грамотного инженера (наша основная ЦА) установка службы - рутинное дело.
Везет вам. Мои программы рассчитаны на простых пользователей, и вариант со службой у меня не прокатит))) Могут и не справиться)))
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
17.04.2015, 19:03
aquaMakc, жалко, что вам это прямо щас требуется Потому как на подходе .Net Native, и уж сишарпный код, по которому прошелся С++ оптимизатор, где логика на 2/3 будет сгенерированна компилятором на основе вашего кода (анрол циклов, перестановка операций,....), где черт ногу сломит, ломануть было бы весьма затруднительно.

А так - C# не преназначен для написания подобных программ. Даже если вы напишете свою логику привязки к железу никто не мешает декомпилировать, посмотреть, что там происходит, и собрать назад. Вон пример с PVS-Studio на днях показал, как оно бывает. И обфускация тут не поможет. Я и сам баловался, сломал один известных в некоторых кругах продукт, да как взломал, получил доступ ко всей клиентской базе, со всеми емейлами, телефонами, ключами... Мог их удалять, добавлять свои, редактировать... Короче, полный доступ. Правда я этого делать не стал, ибо в образовательных целях делал. Но факт есть факт.

Даже на плюсах программы ломаются, что уж говорить про шарп, где метаданные хранят абсолютно всю информацию о сборке.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
17.04.2015, 19:49
Цитата Сообщение от Psilon Посмотреть сообщение
никто не мешает декомпилировать
Простенький самописный (можно и на заказ, можно и скачать бесплатный) обфускатор сильно усложнит дело. При условии что проверка лицензии не идёт константным стрингом
Цитата Сообщение от Psilon Посмотреть сообщение
И обфускация тут не поможет
Поможет.

Цитата Сообщение от Psilon Посмотреть сообщение
на подходе .Net Native
Цитата Сообщение от Psilon Посмотреть сообщение
Даже на плюсах программы ломаются
0
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
17.04.2015, 21:04
Цитата Сообщение от aquaMakc Посмотреть сообщение
2) Исходя из первого пункта есть возможность мухлежа. Поскольку разработчики не могут лично проверить действительно ли произведён апгейд первого ПК, или держатели скопипастили программу на другую машину.
а вы сделайте, чтоб прога для получения ключа собирала максимум доступной инфы о ПК, шифруйте ее хорошо, и пусть вам клиент ее шлет. Из полученного кода вы вытаскиваете нужные данные, генерируете ключ и отправляете клиенту, а сами данные оставляете у себя.

при повторной генерации ключа (типа после апгрейда/поломки) - сравниваете данные что были присланы в предыдущий раз, и текущие - если есть какие ниб совпадения, - клиент не врет, если нет, то или системник поменял, или мошенник.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
17.04.2015, 21:08
Цитата Сообщение от skilllab Посмотреть сообщение
Простенький самописный (можно и на заказ, можно и скачать бесплатный) обфускатор сильно усложнит дело. При условии что проверка лицензии не идёт константным стрингом
я на встречал обфускаций, которые нельзя было бы сломать за день.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
17.04.2015, 21:14
Цитата Сообщение от Psilon Посмотреть сообщение
я на встречал обфускаций
тем лучше, неправда ли?

Добавлено через 2 минуты
Цитата Сообщение от Psilon Посмотреть сообщение
Я и сам баловался
все мы не безгрешны
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
17.04.2015, 21:29  [ТС]
Вопрос не в декомпиляции программы. А в защите от использования не тем, кто её приобрёл. Пока самой жизнеспособной идеей есть - сбор информации о системе через WMI, шифрование, отправка разработчикам (руками пользователей по электронке), генерация ключа (алгоритм ещё даже не обдумывался). При запуске программы производится сравнение параметров системы с ключём. Всё совпадает - работает. Не совпадает - закатываем истерику и отказываемся работать
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
17.04.2015, 21:37
Цитата Сообщение от aquaMakc Посмотреть сообщение
самой жизнеспособной идеей есть - сбор информации о системе
Да, так и есть.
Я для себя придумал нечто вроде универсального способа, который работает для всех программ, которые я написал (и напишу в будущем), и вместе с тем не создает двух одинаковых ключей.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
17.04.2015, 21:40
Цитата Сообщение от aquaMakc Посмотреть сообщение
алгоритм ещё даже не обдумывался
Их полно в интернете. Можно вообще "подглядеть" существующие. Вон, как Psilon сделал, и пойти дальше, объединив несколько технологий в 1.
Самая простенькая защита у меня была:
C#
1
2
3
String Key; //длинющая строка зашифрованного стринга
String Value; //вторая такая же
SomeObject myApp = GetApp(SomeDecodeMethod(SomeDecodeMethod(Value,Key),Value));
Ну и обфускация всего этого. Русскими символами))))
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
17.04.2015, 21:42
Цитата Сообщение от skilllab Посмотреть сообщение
Можно вообще "подглядеть" существующие.
Фу, ну зачем так грубо копипастить... Надо включать фантазию)
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
17.04.2015, 21:48
Правда GetApp в нативной уже DLL-ке прятался. Ну, короче, обычная магия с этим треклятым NET

Добавлено через 1 минуту
Цитата Сообщение от insite2012 Посмотреть сообщение
Надо включать фантазию)
Как говорится, все стихи давно написаны и песни спеты. Берёшь чуток репчика, мешаешь его с Вивальди, обфускатишь ()=> вуаля.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
17.04.2015, 21:50
Цитата Сообщение от skilllab Посмотреть сообщение
все стихи давно написаны и песни спеты.
Не думаю. Чем больше будет именно своего, тем будет надежнее.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
17.04.2015, 21:57
Цитата Сообщение от insite2012 Посмотреть сообщение
тем будет надежнее.
Цитата Сообщение от Psilon Посмотреть сообщение
я на встречал обфускаций, которые нельзя было бы сломать за день.
--------------
Первый релиз .NET Framework вышел 5 января 2002
Думается, что с той поры много чего было понаписано и испробовано. Но вам виднее))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2015, 21:57
Помогаю со студенческими работами здесь

Посоветуйте способ "защиты от дурака"
Здравствуйте, возник такой вопрос. Нужно сделать программу, которая бы хранила различную информацию в файле формата XML. С возможностями...

Способ защиты документа от сохранения
Здравствуйте, меня интересует вопрос: можно ли защитить документ от сохранения, но можно было бы его редактировать? История: делаю на...

Красивый способ защиты базы данных Аксесса!
Как защитить MDB-базу Аксесса - тема старая и избитая. Все уже давно сошлись на том мнении, что самое глупое решение - это установка...

Как и где взять программу для защиты двд видеодиска от копирования. Хоть какой нибудь способ?
Собираюсь продавать диски. Мой собственный продукт.

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru