Вещи, которые вы должны учитывать:
- Запутывание не защищает ваш код или логику. Это только затрудняет чтение и понимание.
- Запутывание никто не останавливает от обратного инжиниринга. Это просто замедляет процесс.
- Ваша интеллектуальная собственность защищена законом в большинстве стран. Так что, если конкурент использует ваш код или конкретную реализацию, вы можете подать в суд на него.
Единственная проблема, которую может решить запутывание - это то, что кто-то создает копию вашей конкретной реализации в формате 1: 1 (или близко к 1: 1).
Также в идеальном мире реверс-инжиниринг запутанного приложения экономически непривлекателен.
Но вернемся к реальности:
- На этой планете не существует инструмента, который мешал бы кому-либо копировать пользовательские интерфейсы, поведение или результаты, которые предоставляет или производит какое-либо приложение. В этих ситуациях запутывание на 100% бесполезно
- Лучший на рынке обфускатор не может воспрепятствовать использованию какого-либо дизассемблера или шестнадцатеричного редактора , а для некоторых гиков это довольно хорошо, если заглянуть в суть приложения. Это просто сложнее, чем в необъяснимом коде.
Таким образом, реальность такова, что вы можете усложнить и отнять больше времени на изучение своего приложения, но вы не получите никакой надежной защиты. Независимо от того, используете ли вы бесплатный или коммерческий продукт.
Передовые технологии, такие как запутывание потока управления или виртуализация кода, могут иногда усложнять понимание логики, но могут также вызывать много смешных и трудных для отладки или решения проблем. Поэтому они иногда больше похожи на дополнительную проблему, чем на решение.
С моей точки зрения, запутывание не стоит тех денег, которые некоторые компании берут за свои продукты. Если вы хотите поносить случайных разработчиков, то обфускаторы с открытым исходным кодом достаточно хороши. Если вы хотите, чтобы как можно сложнее было заглянуть в суть ваших приложений, вам необходимо использовать криптографические контейнеры с виртуальными средами выполнения и виртуальными файловыми системами, но они также предоставляют векторы атак и также могут быть источником множества проблем. .
Ваша интеллектуальная собственность и ваши продукты защищены в большинстве стран законом. Так что, если кто-то из конкурентов анализирует и копирует ваш код, вы можете подать в суд на него. Если ваш заявитель получает плохой парень, или хакер, или взломщик, вас разыгрывают, но обфускатор ничего не меняет.
Так что сначала вы должны подумать о своих целях, своем рынке и о том, чего вы хотите достичь с помощью обфускатора. Как вы можете прочитать здесь (и в других местах), запутывание не решает проблему обратного инжиниринга. Это только усложняет и отнимает больше времени. Но если это то, что вы хотите, вы можете взглянуть на обфускаторы с открытым исходным кодом, например, например. sharpObfuscator или obfuscar, которые могут быть достаточно хороши для использования случайных кодеров (список можно найти здесь: Список .NET Obfuscators в Википедии ).
Если это возможно в вашем сценарии, вас также могут заинтересовать SaaS-Concepts. Это означает, что вы предоставляете доступ к своему программному обеспечению, но не к самому программному обеспечению. Таким образом, клиент обычно не имеет доступа к вашим сборкам. Но в зависимости от уровня обслуживания, безопасности и пользовательской базы это может быть дорого, сложно и сложно реализовать надежный, уверенный и эффективный SaaS-сервис.