Создание версии программы с ограниченным использованием в VC ++ - PullRequest
1 голос
/ 14 апреля 2011

Наша компания помогает переносить клиентское программное обеспечение с других языков на C ++.Мы предоставляем им исходный код C ++ для их приложений, а также файлы заголовков и скомпилированные библиотеки для функций поддержки во время выполнения.Мы берем плату как за миграцию, так и за время выполнения.Недавно потенциальный клиент попросил перенести одну из нескольких имеющихся у них систем.Эта система содержит 7 программ, и мы хотели бы ограничить время выполнения, чтобы только эти 7 программ могли иметь к ней доступ.Мы можем ограничить время выполнения, поместив зашифрованную дату истечения срока действия в библиотеку объектов, но, поскольку мы должны предоставить исходный код для преобразованных программ, у нас возникают трудности с поиском способа ограничения доступа к определенному набору программ.,Очевидно, что все, что мы помещаем в исходный код для идентификации программы, может быть скопировано в любую другую программу, поэтому единственная надежда, по-видимому, состоит в том, чтобы библиотека времени выполнения обнаружила некоторый набор характеристик о программах, а затем проверила их на соответствие встроенным характеристикамв библиотеке времени выполнения.Насколько я понимаю, в C ++ очень мало возможностей отражения (RTTI - это все, что я мог найти), поэтому я хотел спросить, сталкивался ли кто-либо с подобной проблемой и нашел способ ее решения.Заранее благодарим за любые предложения.

На основании этих двух ответов небольшое разъяснение кажется в порядке.Мы полностью ожидаем, что клиент изменит исходный код, и обычно мы предоставляем им неограниченную версию библиотек времени выполнения.Этот конкретный клиент запросил версию, которая была ограничена одной системой, и с удовольствием вступает в лицензию, которая ограничивает использование библиотеки времени выполнения для этой системы.Поэтому обсуждение правовых вопросов не актуально.Проблема носит технический характер: при наличии лицензии, которая ограничена одной системой, и при условии, что у клиента есть источник для вызывающих программ, но нет времени выполнения, существует ли способ ограничить доступ к среде выполнения набором программвключая эту систему, обеспечивая соблюдение условий лицензии.

Ответы [ 3 ]

1 голос
/ 14 апреля 2011

Если они не должны вносить дальнейшие изменения в программы, почему вы дали им исходный код? И если ожидается, что они продолжат изменять программы (т.е. обслуживание), кто решает, является ли изменение новой программой, которой не разрешено использовать библиотеку?

Технического способа реализации этой модели лицензирования не существует.

Возможно, есть законный путь - в коде, который загружает / включает библиотеку, напишите комментарий «Это мера защиты от копирования». Затем DMCA запрещает им включать этот код в другие программы (в США). Но IANAL, и я не думаю, что DMCA в любом случае действителен.

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

0 голосов
/ 14 апреля 2011

Почему бы просто технически не ограничить использование среды выполнения одной системой?Есть много программных решений для защиты программного обеспечения, одно из которых мне приходит в голову: SmartDongle .

Теперь среда выполнения может использоваться любой другой программой на этом компьютере, но я думаю, чтобыть второстепенным, нет?

0 голосов
/ 14 апреля 2011

Самый очевидный ответ, который я могу придумать, - это получить имя и / или путь вызывающего процесса - просто сравните это имя с 7 «разрешенными» программами в вашей библиотеке поддержки.Конечно, они могут создать новый процесс с тем же именем, но они могут не знать об этом.

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

В качестве другой мысли, вы можете попробовать добавитьнекоторые, казалось бы, доброкачественные строки в ресурсах приложения.(«Copyright 2011 ~ Название вашей корпорации ~»). Затем вы можете отсканировать родительский исполняемый файл на наличие магических строк.Если они создают новый продукт, они могут не подумать о создании этого ресурса.

Наконец, как уже отмечал Бен, если вы даете им исходный код, вероятно, не существует надежных решений этой проблемы.(По его словам, в какой момент «модифицированный» код становится новым приложением?) Лучшее, что вы, вероятно, сможете сделать, - это добавить достаточно маленьких контрольно-пропускных пунктов, чтобы они не потрудились использовать эту библиотеку для другого продукта.Вероятно, это зависит от того, насколько они решительны и / или счастливы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...