Лично я придерживаюсь одного или другого. Это не имеет значения. И обеспечение Вашего собственного значения к любой кавычке должно только смутить других людей, когда Вы сотрудничаете.
Вы могли бы заставить DLL проверять свое окружение и не работать (я предлагаю вам сделать так, чтобы он давал неверные результаты, а не ломался), если окружение не похоже на домашнее. Вам также придется скрыть код, чтобы помешать попыткам снять защиту.
Изменить: вы можете использовать переменную окружения, ключ реестра, наличие счетчика производительности, непонятный параметр в machine.config и т. Д. И сделать это выглядит как подлинная настройка, затем замаскируйте и подпишите строгим именем.
Это странное положение ... мои соболезнования.
На уровне .Net лучшее, что вы можете сделать, - это запутать свой код при его создании. Тщательная подпись вашей сборки позволит вам узнать, происходит ли вмешательство.
Другой подход, который использовали некоторые люди, - это написать действительно конфиденциальный код на C ++, скомпилировать его в неуправляемую .dll и вызвать его из. net с использованием interop. Байт-код C ++ намного сложнее читать, чем IL, и это создает намного больше препятствий для легкого обратного проектирования.
Изменить: на основе комментариев из OP, вот обновленный ответ.
Если вы просто беспокоясь о том, что они украдут DLL, которую вы помещаете в папку bin на своем веб-сервере, просто опубликуйте ее в подпапке \ bin, заблокируйте папку с помощью разрешений Windows, чтобы они не могли попасть в нее, и измените свой web.config, чтобы проверить его.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin\mysubfolder;" />
</assemblyBinding>
</runtime>
Обязательно убедитесь, что вы указали строгое имя .dll, и храните файл закрытого ключа в безопасном месте. Это делает ваш .dll однозначно идентифицируемым, и вмешательство может быть обнаружено, если они все же доберутся до него.
Вы можете попросить dll поговорить с доверенным третьим лицом (которым, вероятно, будет сервер, которым вы будете управлять), чтобы слегка пожать руку, чтобы убедиться, что он должен работать.
Что-то вроде
A. Hey, I'm sitting at [hostname->taken from env vars], can i do my job?
B. (checks records of registered hosts) Yes you can.
A. Thanks. (does what it does best)
править: Грубо говоря, если кто-то еще знает, что вы это делаете, он может привязать удаленный адрес к машине по своему выбору ... в этот момент вы еще не исправили исходную проблему.
Это может не соответствовать вашей ситуации, но вы можете предоставить им прокси-DLL, который не выполняет вычисления, а вместо этого вызывает вашу DLL.
Затем вы сохраняете свою DLL на другом сервер, доступ к которому есть только у вас, и прокси DLL вызывает его через какой-то протокол удаленного взаимодействия.
По теме: https://stackoverflow.com/questions/181991/suggest-a-good-obfuscator-for-net-closed .
Возможно, вы захотите выборочно скрыть свой код (оставьте общедоступные API как есть)
Я мало что знаю о правовой системе в Индии, но убедитесь, что вы заставили их подписать какую-либо форму NDA и дать им понять, что вы серьезно относитесь к этому и подаете в суд их, если они его нарушают.
И, если возможно, раскрывайте вашу DLL только через службу Windows или внепроцессный COM-сервер, чтобы вы могли изолировать свою DLL, где они не могут получить к ней прямой доступ.
Если у них есть физический доступ к вашей DLL, а они наполовину компетентные разработчики, то, вероятно, вы не так много сможете сделать с технологической точки зрения, чтобы фактически помешать им ее использовать. Вы можете немного замедлить их, но они неизбежно получат то, что хотят, если у них будет доступ к двоичному файлу. Отказ им в доступе к двоичному файлу - единственный эффективный способ предотвратить это.
Однако, если DLL каким-либо образом обрабатывает ввод пользователя и предоставляет контент для отображения в результате, то вы можете вставить какое-то «пасхальное яйцо», которое будет выводить отдельную подпись какого-то типа, основанную на каком-то неясном, но конкретном вводе. В зависимости от правовой системы, которая может быть достаточно хорошей, чтобы начать расследование и заставить их предоставить доступ следователям, чтобы доказать, что они не крадут ваши технологии. Если они не знают, что это там, они, вероятно, не будут искать и отключать его, прежде чем вы его вызовете.
В зависимости от правовой системы, которая может быть достаточно хорошей, чтобы начать расследование и заставить их предоставить доступ следователям, чтобы доказать, что они не крадут ваши технологии. Если они не знают, что это там, они, вероятно, не будут искать и отключать его, прежде чем вы его вызовете. В зависимости от правовой системы, которая может быть достаточно хорошей, чтобы начать расследование и заставить их предоставить доступ следователям, чтобы доказать, что они не крадут ваши технологии. Если они не знают, что это там, они, вероятно, не будут искать его и отключать, прежде чем вы его вызовете.Я бы создал веб-службу на защищенном сервере, которая открывала бы функции вашей dll. После завершения разработки вы можете изменить части кода, которые вызывают веб-службу, чтобы напрямую вызывать dll.
Я согласен со стратегией LachlanG по распространению прокси DLL вместо того, чтобы давать вашим разработчикам доступ к производственному, который можно легко взломать и перевернуть.
Другой вариант, который вы можете изучить, это "донгл" для защиты ваших DLL. Я наткнулся на ваш вопрос во время поиска решения моей проблемы. Я изучаю этот вариант, так как нахожусь в одном месте, но с еще более уязвимым решением на основе PHP.
Я обнаружил, что Keylok предлагает конкурентоспособный продукт по доступной цене, которую я настоятельно рассматриваю. Пока неясно, как защитить вызовы API в PHP, код которого не является двоичным и не обфусцированным. Я не предвижу никаких проблем с DLL.
Я был менеджером проекта в компании, которая защищала свое программное обеспечение для интеграции SAP с такого рода донглами. Конечным продуктом был компакт-диск с кодом, руководством по установке, донглом и лицензионным счётом за $200k. Мило!!! Это было 10 лет назад, и я еще не слышал от них ни одной истории о пиратстве или нарушении авторских прав!
Надеюсь, это поможет.
.