1 бесплатный, который вы могли бы проверить это Babel . Он предназначен для использования в командной строке (как и многие другие обфускаторы), есть Reflector addin, который предоставит вам пользовательский интерфейс.
Когда дело доходит до запутывания, вам действительно нужно проанализировать, какова ваша цель. В вашем случае - если у вас есть веб-приложение (mvc), планируете ли вы продавать его как стандартное загружаемое приложение? (если нет, и вы сохраняете исходный код на своих веб-серверах, он вам не нужен).
Вы можете посмотреть на компоненты и выбрать только определенные части, чтобы запутать ... не все. В общем, приложения ASP.Net ломаются довольно легко, когда вы пытаетесь добавить запутывание после того, как разработали их из-за всех использованных отражений.
Практически все, что упомянуто выше, является правдой ... все зависит от того, сколько функций вы включаете, чтобы затруднить обратную обработку кода:
- Переименование членов (поля / методы / события / свойства) является наиболее распространенным (поставляется в разных вариантах: простое переименование методов из чего-то вроде GetId () в a () вплоть до нечитаемых символов и удаления пространств имен). Кстати, это то место, где размышления обычно ломаются. Ваш сборочный файл может оказаться меньше из-за использования строк меньшего размера.
- Строковое шифрование: это затрудняет обращение ваших статических строк, используемых в вашем коде. Кстати, это в сочетании с переименованием затрудняет отладку проблем с переименованием ... так что вы можете включить его после того, как это сработает. При этом также потребуется добавить код для расшифровки строки непосредственно перед ее использованием в IL
- Кодовое искажение ... это то, к чему BlueRaja обращался. Это делает ваш код похожим на код spagetti - чтобы его было сложнее понять. CLR не нравится это ... он не может оптимизировать вещи так просто, и ваш конечный код, скорее всего, будет обрабатываться медленнее из-за дополнительного ветвления и чего-то не встроенного из-за перезаписи IL, используемой для этой опции. Кстати, эта опция действительно поднимает планку того, что нужно для обращения к исходному коду, но может привести к снижению производительности.
- Удаление неиспользуемого кода. Некоторые обфускаторы предлагают вам возможность обрезать любой код, который он находит неиспользуемым. Это может сделать вашу сборку немного меньше, если вокруг вас висит много мертвого кода ... но это просто бесплатная выгода от обфускаторов.
Мой совет - использовать его, только если вы знаете, почему вы его используете, и проектируйте с этой целью ... не пытайтесь добавлять его после того, как вы закончили свой код (я сделал это, и это не весело)