Один из вариантов может заключаться в том, чтобы пометить все открытые классы в вашей DLL как «внутренние» вместо «public», а затем использовать атрибут «InternalsVisibleTo» в вашей DLL, чтобы явно назвать библиотеки DLL (и, возможно,exes), которым разрешено использовать ваши внутренние типы.Это может потребовать, чтобы у всех участников были строгие имена, но в любом случае это хорошая вещь.
В конечном счете, не существует абсолютного способа запретить определенному хакеру доступ к вашему коду, когда ваш код выполняется на компьютере хакера.Весь код, который может быть выполнен машиной, можно разобрать и собрать во что-то еще с помощью достаточно продвинутых инструментов и опыта.
Лучший способ приблизиться к безопасности кода - это задать вопрос: «Насколько сложно нам сделать так, чтобы кто-то использовал этот код без лицензии или авторизации, и сколько времени / денег мы готовы потратить надостичь этого?Если вы ничего не делаете, кому-то очень легко использовать ваши DLL в другом проекте.Если вы делаете несколько простых вещей, вы можете сделать неудобным для кого-то использование ваших DLL в другом месте.Если вы потратите месяцы усилий, вы, возможно, сможете сделать так, чтобы кто-то очень неправильно использовал ваш код, но вы никогда не сделаете это невозможным.
Один метод, который настолько близок к абсолютной безопасности, насколько я могу себе представитьis: не выполнять ваш код на машине клиента (или хакера) вообще.Вместо этого запустите веб-службу и сохраните свой код на сервере, где хакер не сможет случайно запустить отладчик вашего процесса или разобрать ваш код.Ваша безопасность кода определяется физической защитой на сервере и сетевым доступом к портам сервера.Эти векторы атаки на много порядков сложнее обойти, чем что-либо, что вы можете сделать для кода, выполняемого на компьютере хакера.
Для некоторых компаний-разработчиков программного обеспечения перенос части своих приложений с клиента в облако - это не улучшение масштабируемости, не упрощение обновлений и не снижение затрат, а безопасность кода и предотвращение пиратства.