C ++ Защита интеллектуальной собственности / Антиреверсивный - PullRequest
6 голосов
/ 27 мая 2009

Я видел много дискуссий здесь о защите от копирования. Меня больше интересует антиреверс и защита IP.

Существуют такие решения, как Safenet и HASP, которые утверждают, что шифруют двоичный файл, но защищены ли они от обращения при использовании с действительным ключом?

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

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

Ответы [ 7 ]

7 голосов
/ 27 мая 2009

Существуют такие решения, как Safenet и HASP, которые утверждают, что шифруют двоичный файл, но защищены ли они от обращения при использовании с действительным ключом?

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

Лично я бы не волновался. Правда, я ничего не знаю о вашем бизнесе, но мне кажется, что реверс-инжиниринг C ++ относительно сложен по сравнению с такими языками, как Java или .NET. Этого будет достаточно для защиты всех, кроме самых решительных атакующих.

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

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

6 голосов
/ 27 мая 2009

наймите людей, с которыми я работал за эти годы, они полностью запутают исходный код!

1 голос
/ 23 июля 2009

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

Задержка обратного инжиниринга только «задержит» неизбежное. То, на чем вам нужно сосредоточиться, - это предотвратить первоначальную попытку нарушения авторских прав / IP. Хорошее юридическое уведомление об условиях и положениях на странице «О программе» или смелое уведомление об авторских правах, предупреждающее о том, что любые попытки реверс-инжиниринга кода приведут к кирке через позвоночный столб ...

Большинство людей откажутся от попыток сорвать что-то, если есть вероятность, что им будет предъявлено какое-либо судебное решение.

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

1 голос
/ 27 мая 2009

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

Вы указываете две цели желаемой схемы защиты:

1) затруднить обратный инжиниринг. 2) Обвините кого-то, что вас обманывают.

Для # 1 любая схема обфускатора / детектора отладки / и т. Д. Будет иметь хоть какое-то влияние. Честно говоря, однако, сокращение числа инженеров, которые когда-либо углублялись в вывод компилятора, означает, что скомпилированный код C / C ++ является запутанным кодом для многих.

Для # 2, если у вас нет конкретного и юридически защищенного алгоритма / процесса, который вы пытаетесь защитить, как только приложение будет реверс-инжиниринг, вы потерялись. Если он защищен законом, вы уже опубликовали защищенные данные, так что вы пытаетесь получить?

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

1 голос
/ 27 мая 2009

Есть две основные области:

  1. Запутывание - часто означает переименование и удаление символов. Некоторые могут также переставлять код эквивалентными преобразованиями кода. Исполняемые упаковщики также обычно используют логику антиотладки.
  2. Защита нижнего уровня - это означает программирование на уровне ядра или оборудования. При использовании руткитов, таких как Sony, nProtect, защита от копирования CD / DVD.
1 голос
/ 27 мая 2009

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

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

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

Обычно, чем более коммерчески ваше решение, тем более "хорошо известны" векторы атаки.

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

1 голос
/ 27 мая 2009
...