Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > защита копии программы


Автор: yogin 28.11.2011, 16:21
Приветствую.

Тема такая: 
Нужно без опаски доверять программу клиентам(лицам) для личного администрирования. Прога - севрер для обслуживания определённых клиентских программ.
Если бы сервак стоял только у меня, то я бы не беспокоился о том, что клиенты могут подключаться только в таком кол-ве, в каком доступно. Вообщем полный контроль у меня был бы.
А в схеме по доверению сервера я беспокоюсь за то, что пользователь может вскрыть сервак, в котором я зашью например сколько клиентов он может обрабатывать и всё, будет пользоваться им безвозмездно...
К тому же например чтобы я сам мог мониторить каждый сервак, зашью в них посылку идентификации на какой они машине работают, пусть посылают эту инфу например на хостинг гет запросом, и я буду видеть какой серв, где и как работает, смогу подключаться к нему например суперадмином и мониторить что там как. Это могут обрубить?

Вот собственно и вопрос, как мне быть спокойным?

Собственные идеи:
1) заранее подготавливать копию сервера для определённого компьютера, где бы он проверял ip на котором работает и если что-то не так, то отказывался бы работать.
2) посылка гет запросов на хостинг о том, что такой-то сервер работает на таком-то ip. после чего я смогу подключиться к нему и промониторить, если что-то не так, то отправлять команды по блокировке действий.

Что посоветуете? Что будет являтся достаточно надёжным?

Автор: valentos 29.11.2011, 09:23
1 идея имеет право на жизнь. В этом случае организуется нейкая защита от копирования. Только привязка к IP неподойдет (Он может изменяться). Привязываться надо к железу, которое не меняется со временем. Например привязаться к данным о процессоре и маме (например по серийникам), связать их вместе, вот тебе и ключ с лицензией на один компьютер..

Автор: yogin 29.11.2011, 13:27
Цитата(valentos @ 29.11.2011,  09:23)
Например привязаться к данным о процессоре и маме (например по серийникам), связать их вместе, вот тебе и ключ с лицензией на один компьютер..

А дезассемблированием такую проверку в программе могут свести на нет?
Например сервак где-то в коде проверяет на какой машине его запустили и если что, закрывается. Вот я про это место проверки имею ввиду, это могут как-то обойти?

И если всётаки такое могут обойти, то поможет ли если функции проверки разместить в dll'ке? Это как бы получается вопрос - dll'ку сложнее сломать чем программу?

Автор: valentos 29.11.2011, 13:50
Цитата(yogin @  29.11.2011,  13:27 Найти цитируемый пост)
 Вот я про это место проверки имею ввиду, это могут как-то обойти?

Давай все таки отталкиваться от того что у тебя на сервере, админ не законченный хакер с 30-летним стажем взломов ПО smile  Думаю для рядового пользователя такой проверки в программе будет более чем достаточно. Ну а если он все таки хакер, то я думаю что любая защита может быть взломана. Ведь если существовала бы защита которую немогли бы взломать, то пришлось бы уже давно привыкнуть покупать игры, софт и др., а так пока инет спасает)) smile 
Цитата

И если всётаки такое могут обойти, то поможет ли если функции проверки разместить в dll'ке? Это как бы получается вопрос - dll'ку сложнее сломать чем программу?
 Давай не будем доходить до темы 32-битного шифрования данных?  smile 

Автор: Frees 29.11.2011, 14:10
Цитата(yogin @  29.11.2011,  16:27 Найти цитируемый пост)
И если всётаки такое могут обойти, то поможет ли если функции проверки разместить в dll'ке? Это как бы получается вопрос - dll'ку сложнее сломать чем программу?

ИМХО разницы нет, кроме того программу можно изменить так чтоона перестанет обращаться к длл.

Можно аппаратную защиту рассмотреть.

а можно просто в тексте лицензии запретить распространение, а нарушителей в суд.

PS тема широко рассмотрена воспользуйся поиском

Автор: valentos 29.11.2011, 14:22
Цитата(Frees @  29.11.2011,  14:10 Найти цитируемый пост)
а можно просто в тексте лицензии запретить распространение, а нарушителей в суд.

Насколько я знаю по конвенции об авторских правах, с момента опубликования программы, автор таким правом уже наделен. Осталось ток написать программу-шпион, которая будет висеть в процессах и проверять, если exe файл программы появился в буфере обмена, то она автоматом будет генерировать иск в суд  smile 

Автор: yogin 29.11.2011, 17:17
Цитата(valentos @ 29.11.2011,  13:50)
Ну а если он все таки хакер, то я думаю что любая защита может быть взломана. Ведь если существовала бы защита которую немогли бы взломать, то пришлось бы уже давно привыкнуть покупать игры, софт и др., а так пока инет спасает))

Ну вот я и имею ввиду, что ктонить может быть посчитает выгодным нанять кулхацкера и "перепрошить" сервер под себя и безвозмездно потом юзать неограниченно.
Ещё насчёт взлома я думаю должен вставать вопрос, а не выгоднее ли будет злоумышлиннику написать аналог, нежели нанимать кулхацкера... я просто не знаю цен вопросов по взломам.

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

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

Автор: pseud 29.11.2011, 17:25
yogin, 
Прога при запуске генерит некую строку (привязываясь к железу и шифруя) определенной длины. Например, 'ABC123'
Далее она ищет файл лицензии 'ABC123.lic'.
1. Находит. 
2. Не находит.

1. Находит:
Он конечно зашифрован. Съедает его. Расшифровывет и достает нужную инфу, в том числе "максимальное количество клиентских подкулючений". И работает.
2. Не находит:
Выдает на экран месагу 
Цитата

Не найден файл лицензии 'ABC123.lic'

Пользователи звонят разработчику (продавцу) и сообщают имя требуемой лицензии. Разработчик запускает прогу генерации лицензий. Вбивает имя лицензии. Выставляет нужные параметры, в том числе "максимальное количество клиентских подкулючений". Генерит файл (зашифрованный) и отсылает пользователям. 
Далее пункт 1.

Автор: Akella 1.12.2011, 15:17
yogin, а если использовать готовые решения? 

Тебе наверное в этот раздел: http://forum.vingrad.ru/tech-piracy-protect-software.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)