Как сохранить логику программы.NET (разумно )в секрете?

Правильно, я говорю о коде проверки лицензии в настольном приложении, например. метод bool ValidateLicense(string licenseCode). Конечно, любая схема защиты может быть переработана квалифицированным и целеустремленным взломщиком. Тем не менее, я бы не хотел, чтобы любой, у кого есть базовые знания в области программирования, мог использовать Reflector для создания кейгена за пару минут.

Возможные подходы

  1. Затемнение . Насколько я понимаю, запутывание приводит к снижению производительности и может препятствовать (законной )отладке. Так существуют ли инструменты, позволяющие запутывать только избранные методы?

  2. Переместите метод в ngen'ed сборку или неуправляемую DLL . Но разве это не приглашение просто заменить DLL? Любые идеи, как предотвратить (чтение :сделать это немного сложнее для злоумышленника )?

  3. Другое ?

PS :Вопрос явно связан с Защитить код.NET от обратной разработки? пытаюсь применить мысли оттуда на практике

ОБНОВЛЕНИЕ

1. Первым шагом запутывания, безусловно, будет переименование метода проверки. (Спасибо, Джонатан)

2. Предполагая, что приложение использует методы API Win32, можно -перенаправить вызовы через неуправляемую библиотеку DLL, сделав ее неотъемлемой частью приложения. Игра с сигнатурами методов (, например. изменить имя, параметры подкачки )сделают это менее очевидным. Считаете ли вы врожденные недостатки оправданными?

К 3. Не распространять метод проверки относится сюда. Держите его на своем сервере и звоните удаленно, т.е. используйте онлайн-проверку (Спасибо,Дэвид Хедлунд)

5
задан Community 23 May 2017 в 12:29
поделиться