Подтвердить что ты не робот

С#: Как сделать его более трудным для хакера/крекера, чтобы обойти или обойти проверку лицензирования?

Прежде всего, я понимаю, что почти все приложения могут быть взломаны (особенно написано на С#). Мой вопрос здесь состоит в том, чтобы сделать его немного сложнее взломать.

Предположим, что пользователь сохранил файл лицензии в разделе Application.StartupPath, где все пользователи могут читать.

И затем, каждый раз, когда приложение запускается, оно проверяет, может ли он найти и проверить файл лицензии.

Если приложение может найти и проверить, мы разрешаем пользователю продолжать полные функциональные возможности.

Если нет, мы вызываем MessageBox, показывающий "Unlicensed, продолжаем использовать с пробной версией, ограниченные функциональные возможности".

Мой вопрос: если я хакер/взломщик, я попытаюсь обойти или обойти проверку лицензии вместо взлома файла лицензии, потому что, если мы используем подпись RSA, очень сложно взломать файл лицензии.

Итак, где мы должны поставить проверку лицензии?

P.S.: а также, насколько безопасно ли я помещать глобальную переменную IsLicensed (true/false) для ограничения функциональности? Легко ли для хакера изменить IsLicensed = true?

4b9b3361

Ответ 1

Закон о лицензировании программного обеспечения №1: вы не контролируете свое программное обеспечение, как только вы разрешаете его устанавливать на компьютер, который вы не контролируете.

Если вы хотите сохранить контроль над своим кодом, вам необходимо сделать его веб-сервисом и предоставить конечному пользователю только тонкий клиент, который взаимодействует с этой веб-службой.

Во многих сценариях это неприемлемо, поскольку пользователи хотят иметь возможность использовать свое программное обеспечение, даже если у них нет подключения к Интернету.

Практически во всех случаях вам следует сосредоточиться на том, чтобы улучшить работу пользователя, и все формы защиты от копирования делают его хуже. Как только вы дойдете до того, что опыт загрузки с сайта warez и его запуск с помощью нескольких проверок вирусов лучше, чем установка лицензии для законной версии, вы потеряли.

Ответ 2

Вы можете обфускать код (сделать его сложнее декомпилировать/использовать отражатель на нем), но с достаточной энергией и знаниями он сломается, после чего довольно легко изменить байт-код сборки, тем самым обойдя проверка лицензии. Кроме того, вы можете инвестировать деньги, чтобы вы могли подписать свои сборки, что затрудняло бы изменение самой сборки, но с достаточной энергией (больше, чем просто разрушение обфускации) это также можно обойти.

Ваша цель не должна заключаться в том, чтобы сделать процесс лицензирования нерушимым, но чтобы ваше программное обеспечение стоило покупать. Это намного лучшая защита. Crackers (и только они, хакеры - это нечто совершенно другое, см. эта статья для большего) не будет препятствовать этому, но с программным обеспечением, являющимся стоит того, гораздо больше людей купит его.

Ответ 3

Я думаю, что проверка должна выполняться в нескольких разных местах исходного кода; их гораздо труднее поймать, чем только одного. Кроме того, если вы хотите защитить программу, написанную на С# (или любом другом языке .NET), следует рассмотреть возможность использования некоторого obfuscator. В аналоге взломщик или даже ламер сможет взломать программу с помощью некоторого программного обеспечения, такого как .NET Reflector

Ответ 4

Как уже упоминалось ранее, можно просто использовать рефлектор .NET, чтобы получить весь исходный код вашего программного обеспечения (на самом деле он может даже получить его на VB.NET или других языках, даже если вы написали его на С#!), Вы должны обфускать свою сборку, если хотите надеяться даже на замедление прогресса взломщика.

Что нужно, чтобы люди не могли напрямую копировать лицензии? Если у вас есть лицензия, подписанная, она будет просто подписана в двух местах - что вы сделали, чтобы остановить это? Неважно, будет ли глобальная переменная еще более ослаблять вашу защиту, не принимая во внимание тривиальные "трещины".

На самом деле нет хорошего ответа на это, как отметил Бен Фойгт. Если вам нужно что-то непокрытое, сделайте это веб-приложение с закрытым исходным кодом. Асталависта покажет вам, что большинство вещей было разбито. Продукты Adobe, стоимость которых составляет тысячи долларов, были взломаны, и я уверен, что их сотрудники довольно хорошо разбираются в методах защиты от копирования.