Соглашения, которым нужно следовать, чтобы сделать коммерческое программное обеспечение сложнее взломать? - PullRequest
6 голосов
/ 30 апреля 2009

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

Ответы [ 10 ]

11 голосов
/ 30 апреля 2009

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

И даже тогда я видел некоторые взломы, которые имитируют сервер и отправляют фиктивное подтверждение программе, чтобы она думала, что она говорит с реальным, легальным сервером (в данном случае я говорю о проверке "call home" стратегия, а не игра).

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

Кроме того, см. в этой теме для очень подробного обсуждения этой темы.

6 голосов
/ 30 апреля 2009

Многие ответы, похоже, упускают из виду тот факт, что вопрос заключался в том, как сделать это сложнее, а не в том, как сделать это невозможным.

Запутывание является первым критическим шагом в этом процессе. Что-нибудь еще будет слишком легко понять, если код не запутан.

После этого все зависит от того, чего вы пытаетесь избежать. Установка без лицензии? Взрыв на время? Увеличение использования программного обеспечения (например, на большем количестве процессоров) без дополнительной оплаты?

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

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

3 голосов
/ 30 апреля 2009

Вот несколько советов, не идеально, но, возможно, может помочь:

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

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

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

3 голосов
/ 30 апреля 2009

Существуют сторонние инструменты для запутывания вашего кода. Visual Studio поставляется с одним.

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

3 голосов
/ 30 апреля 2009
1 голос
/ 30 апреля 2009

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

1 голос
/ 30 апреля 2009

Если вам нужно быстрое решение (но, конечно, нет никаких обещаний, что вы не будете взломаны - это просто «защита»), вы можете найти некоторые инструменты, такие как Themida или Звездная Сила . Это обе знаменитые защитные оболочки.

1 голос
/ 30 апреля 2009

С помощью кода .NET сравнительно легко перепроектировать с помощью таких инструментов, как .NET Reflector Запутывание кода может помочь, но все еще возможно работать.

0 голосов
/ 30 апреля 2009

Если вы придумаете способ защитить его, кто-то может придумать способ его взломать. Потратьте достаточно усилий, чтобы, когда люди используют его «незаконным» образом, они знали об этом. Большинство вещей за пределами этого риска являются пустой тратой времени; o)

0 голосов
/ 30 апреля 2009

это почти как миссия невыполнима, если у вас очень мало клиентов.

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

...