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