Наилучшим решением является, вероятно, сочетание популярных тактик, используемых сегодня:
Блокировка приложения вниз
... к MAC-адресу, жесткий диск серийный номер, и окна ключ продукта операционной системы хоста (если доступно). Вы можете жестко записать это в приложение после его сбора на сайте. Если обнаружено неправильное оборудование, выключите его. Кроме того, найдите в реестре элементы, которые предлагают наличие функций интеграции VMware или Virtual PC и отказываются запускаться при поиске.
Затемнение
... так что это будет более сложно декомпилировать, а также удалить лицензирование. CIL чрезвычайно прост в обратном проектировании, поэтому это должно быть фокусом с вашим приложением (как описано) независимо от того, что еще вы делаете. Это может занять много времени, особенно если вы полагаетесь на сериализацию. Если возможно, оберните все ваши сборки в один EXE-файл, который зашифрован и имеет неуправляемый загрузчик.
Разошлите сердцебиение
... на сервер за пределами площадки, с аппаратными или сайта конкретных данных. Если программное обеспечение скопировано и запущено на другом компьютере, вы можете получить подсказку. Это также может предупредить вас, если приложение отключено. Кроме того, вы можете настроить приложение на требуемый базовый зашифрованный ответ с вашего сервера или закрыть его.
Последнее примечание: не следует за бортом. Предположительно, вам платят 10 000 долларов из-за опыта вашей заявки на возможные альтернативы (независимо от того, что это такое). По мере добавления мер защиты вы увеличиваете количество возможных (очень раздражающих) ошибок, добавляете затраты на обслуживание и головные боли для своего клиента. Серьезно разрушительная схема лицензирования может заставить вашего клиента думать иначе.
Это настольный компьютер или приложение ASP.NET? –
Не могли бы вы предоставить контекст о уровне «атаки», который вы хотите защитить от, например, вы ожидаете, что они будут активно пытаться взломать вашу схему защиты, если все пойдет плохо, или это более защищает от случайного «не раздавать копии другим людям»? – itowlson
Кроме того, было бы полезно упомянуть, насколько техническая сложность, которую вы ожидаете от своего нападающего (и любого, кого они зачислили). Вы пытаетесь остановить кого-то, желающего запустить инструмент, например рефлектор, против вашего приложения, вырезать защиту и перестроить его? –