Альтернатива для обфускации в мире .NET - PullRequest
8 голосов
/ 26 августа 2011

Есть ли альтернативы для запутывания, чтобы защитить ваш код от кражи?

Ответы [ 4 ]

22 голосов
/ 26 августа 2011

Предельная защита - модель SaaS. Все остальное так или иначе раскроет ваши драгоценные секреты.

См .: http://en.wikipedia.org/wiki/Software_as_a_service

4 голосов
/ 19 апреля 2014

Краткий ответ:

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

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

У вас обычно есть исходный код как минимум в двух местах вместе со всеми метафайлами, необходимыми для построения проекта:

  1. Ваш компьютер для разработки
  2. Ваш код хранилища

Если вы хотите защитить свой код от кражи, это первые места, где должна быть активна. Даже крупнейшие игроки на рынке, такие как Adobe, Microsoft Corporation, Symantec потеряли исходный код в результате кражи, но не в результате реверс-инжиниринга. А в крупных компаниях ему не нужен внешний злоумышленник - иногда увольняющегося сотрудника достаточно.

Так что вас может заинтересовать:

  • Сильное машинное шифрование
  • Антивирус, Антируткит, Антивирус
  • Брандмауэр и обнаружение вторжений
  • Защита цифровой собственности
  • Ограниченный доступ в Интернет на компьютерах для разработки
  • Управляемые среды удаленной разработки, так что источник никогда не покидает защищенные серверы и инфраструктуру
  • Etc. стр.
  • Четкие процессы и управление соответствующими правами

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

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

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

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

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

С моей точки зрения - и это тоже мой опыт - в большинстве случаев запутывание является излишним.

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

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

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

Это окончательное 100% пуленепробиваемое решение на самом деле не существует на этой планете.

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

3 голосов
/ 06 сентября 2011

Вы также можете кодировать чувствительные функции / компоненты в собственный C ++, обернуть его в C ++ / CLI и использовать с .NET.

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

0 голосов
/ 06 марта 2014

Нет такого обфускатора, который когда-либо был бы достаточно безопасным для защиты приложения, написанного на .NET. Забудь это! Запутывание не является реальной защитой.

Если у вас есть файл .NET Exe, есть более подходящее решение.

Я использую Themida и могу сказать, что он работает очень хорошо.

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

Пожалуйста, прочтите подробное описание на их сайте: http://www.oreans.com/themida_features.php

Единственным недостатком Themida является то, что он не может защитить .NET Dlls. (Сила защиты кода C ++ в Exe и DLL)

...