Redgate приобрел Smart Assembly не так давно, на что я бы обратил внимание, если бы мне это понадобилось.
Некоторое время назад я попробовал CodeViel, чтобы с некоторой степенью успеха взглянуть на запутывание / шифрование кода. Я думаю, что если вы серьезно относитесь к этому, это не так просто, как сбросить сборку на одном конце и получить защищенную сборку. Вам нужно будет рассмотреть части вашего кода (т. Е. Пространства имен, классы, методы, поля, свойства, структуры, события и ресурсы), которые предназначены только для внутреннего использования, и те, которые должны быть доступны другим ресурсам и библиотекам. В том случае, когда я смотрел, я мог зашифровать (или использовать собственную компиляцию), чтобы скрыть некоторые реализации методов, но оставил определение класса (имя, методы, свойства нетронутыми). В некоторых случаях я не затрагивал целые пространства имен, поскольку они содержали только простые объекты POCO, необходимые для других библиотек.
Действительно, кажется, что в каждом конкретном случае тщательно продумано, какую стратегию вы используете, где, некоторые внутренние компоненты, которые вы могли бы запутать, чтобы затруднить декомпиляцию / реверс-инжиниринг, и этого было бы достаточно. В других случаях вы можете использовать шифрование / нативную компиляцию, чтобы просто скрыть реализацию метода. И вы также получите случаи, когда вы исключаете прикосновения к частям сборки. Большинство из этих программ предоставят вам некоторые рекомендуемые значения по умолчанию и опции, с которых вы можете начать, но вам нужно будет настроить и изменить их, пока вы не получите результаты, которые защищают ваш базовый IP, но не ограничивают ваших конечных пользователей.