Защита программного обеспечения шифрованием

Вы приводите ptr к соответствующему типу, чтобы он мог разыменовать, чтобы очистить то, на что он указывает; что-то, что вы знаете, указывает на тип, который вы хотите очистить i элементов.

12
задан Michael Myers 20 September 2012 в 16:06
поделиться

14 ответов

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

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

Так, как мы лицензируем?

Мы генерируем случайный номер лицензии с каждой новой установкой (число между 10K, и 99K делает приятно). У нас затем есть алгоритм для генерации числа соответствия (что-либо нетривиальное сделает). Мы используем случайное число, между прочим, так, чтобы любая попытка переустановила на другом компьютере результаты в различных числах лицензии/соответствия.

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

Я говорю, что наличие их звонит нам, важно, потому что мы используем это в качестве возможности говорить с ними об их установке, отвечаем на любые вопросы и сообщаем им, они имеют дело с настоящими людьми. У очень немногих людей имеется нахальство пытаться назвать и исполнить роль другой компании (мы ищем их и сравниваем их информацию с нашей базой данных покупки). Обратите внимание, что наш пакет выполняет почти $2 тысячи, таким образом, телефонные вызовы разумны. Если Ваш пакет стоит меньше и имеет более высокий объем, Вы могли бы сделать это по электронной почте. Наконец, мы используем вызов - в сказать пользователям, как получить обновления и техническую поддержку с их новой лицензией.

Наконец, мы храним ключ в базе данных приложения (локально установленная база данных MSDE/SQL Express) так, чтобы любая попытка скопировать приложение A) будет нетривиальна и B) принесет по большому количеству данных, характерных для организации, которая сначала купила законную версию (делающий их менее вероятно для совместного использования). Ключ лицензирования шифруется и "разделяется" на два различных ключа, которые сохранены в двух различных таблицах. Таким образом простое "находит ключ и входит, он в пиратской версии" не будет работать.

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

13
ответ дан 2 December 2019 в 03:14
поделиться

Нет никакого пути к абсолютно безопасному ключа. Если это может быть считано Вашей программой, то это может быть считано другой программой.

17
ответ дан 2 December 2019 в 03:14
поделиться

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

Проверить лицензию, отправляя ключ к центральному расположению - самый безопасный путь, потому что они должны были бы взломать Ваш сервер (или протокол, предостеречься) смочь проверить. Это потребовало бы, чтобы возможность соединения использовала программное обеспечение, которое может или не может быть выполнимым. Вы могли также распределить 'сервер лицензий' наряду со своим программным обеспечением для больших установок, это потребует только доступа к локальной сети. Если бы Вы не можете и должны проверить локально только, Вы могли бы записать dll в собственном коде, который это мешало бы перепроектировать.

Чтобы защитить сам код и сделать его защиту тяжелее для обхода запутайте:

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

10
ответ дан 2 December 2019 в 03:14
поделиться

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

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

1
ответ дан 2 December 2019 в 03:14
поделиться

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

3
ответ дан 2 December 2019 в 03:14
поделиться

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

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

3
ответ дан 2 December 2019 в 03:14
поделиться

Моя рекомендация, если это приемлемо, палка с аппаратным ключом. Это склонно быть самыми жизнеспособными подходами.

Если это не опция, то определенно переходят к внешнему поставщику. Вы будете искать, среди прочего, несколько основных характеристик (никакая предназначенная игра слов):

  • Безопасное устройство хранения данных ключа
  • Проверка лицензии
  • Путаница времени компиляции (чтобы мешать демонтировать Ваше приложение)

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

1
ответ дан 2 December 2019 в 03:14
поделиться

Пока ничто не будет прекрасным, проверьте CryptProtectData API, если Вы хотите сделать это сами.

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

0
ответ дан 2 December 2019 в 03:14
поделиться

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

0
ответ дан 2 December 2019 в 03:14
поделиться

Являются эти данные просто коммерческим материалом или вещами, которые Вы совместно используете с рабочими и так форт?

Если это - последний, возможно, можно записать Quick C ++ программа к xor это. В основном, если длина ключа равна длине документа, это должно быть "небьющимся". То, что я делаю в C++, создают буфер случайных символов размера документа, затем xor это, затем просто отправляют файл документа и файл ключей отдельно и затем другого человека xor их вместе для возвращения документа.

Не знайте, поможет ли это Вам все же.

0
ответ дан 2 December 2019 в 03:14
поделиться

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

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

0
ответ дан 2 December 2019 в 03:14
поделиться

Генерируйте хеш (SHA1, MD5, и т.д.) для ключа и hardcode хеш в Вашем приложении. Распределите ключ к своим пользователям. В Вашем исполняемом файле может проверить хеш пользователя указанный ключ против хеша hardcoded:

bool CheckKey(string keyFromUser) 
   return SHA1(key) == "ABC2983CF293892CD298392FG";
}

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

Это - очевидно, не очень надежная защита.

0
ответ дан 2 December 2019 в 03:14
поделиться

Вы могли попробовать стандартные методы, обычно используемые в компьютерных играх, таких как: SafeDisc, StarForce, SecuROM или любое другое программное обеспечение защиты от копирования. Эти системы являются среди наиболее разработанных программных систем к защищенному Вашим приложением.

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

Вы заявили, что сервер лицензий является проблемой Вашей системе, но я не отбросил бы его сразу же. Я думаю сервер лицензий, который выходит, лицензия, по крайней мере, первый прогон программы (скажите, что дешифровать ключ, отличающийся на установку), лучшая сдерживающая мера для сокращения пиратства. Не только сила метода шифрования, но также и и главным образом из-за автоматической системы регистрации. Если Вы позволяете своим клиентам знать, что ключ активации программного обеспечения уникален на установку/пользователя и что это сохранено и подобрано к профилю пользователя, они думали бы дважды об отдаче key+software.

0
ответ дан 2 December 2019 в 03:14
поделиться

Позвольте мне добавить некоторые мысли Вашему вопросу:

  • Ваше программное обеспечение требует какого-либо вида интернет-соединения?
    • Если ответ - "да", можно контролировать использование. (Действительно скажите клиенту об этой функциональности!)
    • Если ответ является "нет", все еще можно контролировать использование в большинстве случаев, но Вы не можете осуществить соединение со Своими серверами для продукта для работы.
  • Вы хотите добавить защиту от копирования к Своему программному обеспечению? Это не риторический вопрос, потому что
    • некоторое программное обеспечение должно быть настроено компанией-разработчиком программного обеспечения или ее партнерами. Если кто-либо сделает копию программного обеспечения, которое должно быть настроено экспертами, то оно просто не будет иметь применения для него.
    • например, если сотрудник Вашего клиента хочет использовать Ваше высокопроизводительное программное обеспечение проектирования схем для своих частных проектов дома, и Вы даете ему разрешение сделать так, затем у Вас есть кто-то на Вашем клиентском сайте, кто будет голосовать за Ваш продукт на каждом решении о покупке.
    • усилие для рабочей защиты от копирования могло быть выше, чем потеря, созданная несанкционированными копиями. (Помните, можно все еще включать его в следующую версию.)
0
ответ дан 2 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: