Альтернатива для обфускации в мире.NET
Есть ли альтернативы для запутывания, чтобы защитить ваш код от кражи?
4 ответа
Предельная защита - модель SaaS. Все остальное так или иначе раскроет ваши драгоценные секреты.
Смотрите: http://en.wikipedia.org/wiki/Software_as_a_service
Краткий ответ:
- Запутывание не имеет ничего общего с защитой от кражи.
- Единственная цель запутывания - усложнить чтение и понимание вашего кода, так что в лучшем случае обратный инжиниринг будет экономически непривлекательным.
Все еще возможно, что кто-то украл ваш исходный код. Даже если вы используете лучшую из доступных технологий запутывания или думаете о сценариях SaaS.
Обычно у вас есть исходный код как минимум в двух местах вместе со всеми метафайлами, необходимыми для создания проекта:
- Ваш компьютер для разработки
- Ваш код хранилища
Если вы хотите защитить свой код от кражи, это первые места, где должны быть активны. Даже крупнейшие игроки на рынке, такие как Adobe, Microsoft Corporation, Symantec потеряли исходный код в результате кражи, но не в результате реверс-инжиниринга. И в больших компаниях ему не нужен внешний злоумышленник - иногда увольняющегося сотрудника бывает достаточно.
Так что вы можете быть заинтересованы в:
- Сильное машинное шифрование
- Антивирус, Анти руткит, Антивирус
- Брандмауэр и обнаружение вторжений
- Защита цифровой собственности
- Ограниченный доступ в интернет на компьютерах разработчиков
- Управляемые среды удаленной разработки, чтобы источник никогда не покидал защищенные серверы и инфраструктуру
- И т.д., стр.
- Четкие процессы и управление правами
Сегодня во многих случаях существует больший риск того, что какой-то плохой парень сможет получить доступ к вашему репозиторию или системе разработки или что ушедший сотрудник будет иметь "резервную копию" вашего кода, чем то, что какая-то компания тратит время на обратный инжиниринг существующих приложений, чтобы создать копию 1:1 или внести изменения (в большинстве стран это незаконно и может привести к серьезному ущербу репутации и дорогостоящим предложениям, а также к тому, что у них нет возможности получить профессиональную поддержку для такого взломанного и модифицированного программного обеспечения)
Запутывание также не означает, что ваша интеллектуальная собственность защищена от кражи или копирования. В зависимости от используемого вами обфускатора все еще можно анализировать логику.
Если вы хотите усложнить анализ логики, вам нужна какая-то запутанность потока управления. Но cfo может создавать много смешных и сложных проблем. Я уверен, что в большинстве случаев это скорее дополнительная проблема, чем решение.
Плохая реальность в том, что запутывание не решает проблему обратного инжиниринга. Это решает проблему копий кода 1:1 (или близко к 1:1). Это связано с тем, что большая часть программного обеспечения имеет узнаваемый пользовательский интерфейс или поведение, и почти во всех случаях возможно воспроизвести пользовательские интерфейсы и поведение (или, если быть более точным: результаты), и не существует инструмента для защиты программного обеспечения от этого.
Если вы хотите, чтобы случайные кодеры понимали ваш код, инструменты с открытым исходным кодом, такие как obfuscar, могут быть достаточно хорошими. Но держу пари, что вы столкнетесь с проблемами, если будете использовать такие технологии, как отражение, удаленное взаимодействие, плагины, загрузка и сборка динамических сборок и т. П.
С моей точки зрения - и это тоже мой опыт - в большинстве случаев запутывание является излишним.
Если вы действительно хотите, чтобы другим было сложно получить доступ к вашему коду (хотя "действительно сложно" относительно), у вас есть два варианта:
Это своего рода криптографический контейнер с виртуальной средой исполнения и виртуальной файловой системой, который защищает не только ваш код, но и все приложение и его структуру. Вектор атаки - это, например, память во время выполнения или сам контейнер.
Подумайте о SaaS, который означает, что вы предоставляете доступ к своему программному обеспечению, но не к самому программному обеспечению. Но имейте в виду, что SaaS-решения могут быть сложными и дорогими в зависимости от уровня обслуживания, безопасности и уверенности, которые вы хотите или должны предоставить. Вектор атаки - это, например, инфраструктура сервера.
Это окончательное 100% пуленепробиваемое решение на самом деле не существует на этой планете.
И последнее, но не менее важное: в некоторых ситуациях может потребоваться предоставить полный исходный код клиентам. Например, если вы разрабатываете индивидуальное программное обеспечение, и поставка кода является частью вашего контракта, или если вы хотите вести бизнес в критически важных сегментах, таких как аэрокосмическая, военная промышленность, государственные системы и т. Д.
Вы также можете кодировать чувствительные функции / компоненты в собственный C++, обернуть его в C++/CLI и использовать с.NET.
Очевидно, что он все еще может быть реконструирован, но, тем не менее, является альтернативой.
Нет такого обфускатора, который когда-либо был бы достаточно безопасным для защиты приложения, написанного на.NET. Забудь это! Запутывание не настоящая защита.
Если у вас есть файл.NET Exe, то есть FAR лучшее решение.
Я использую Themida и могу сказать, что это работает очень хорошо.
Themida намного дешевле, чем большинство обфускаторов, и является лучшей на рынке для защиты от пиратства. Он создает виртуальную машину, в которой выполняются критические части вашего кода, и запускает несколько потоков, которые обнаруживают манипуляции или точки останова, установленные взломщиком. Он преобразует.NET Exe в нечто, что Reflector даже не распознает как сборку.NET.
Пожалуйста, прочтите подробное описание на их сайте: http://www.oreans.com/themida_features.php
Единственным недостатком Themida является то, что он не может защитить.NET Dlls. (Сила защиты кода C++ в Exe и DLL)