Самый простой способ ограничить запуск исполняемого файла на определенном компьютере
Я пытаюсь создать исполняемый файл, который будет работать только на одной машине. Какой самый простой способ добиться этого? Файл лицензии? Или есть машинный адрес, очень похожий на MAC-адрес для сетевых подключений, который я мог бы жестко закодировать в исполняемый файл?
5 ответов
Если он будет работать только на одной машине, то... просто обезопасите машину и сохраните исполняемый файл только на этой машине.
Это, к сожалению, единственный надежный метод.
Более длинный ответ:
- биты могут быть скопированы
- программы могут быть разобраны
- Разборка может быть осуществлена в обратном порядке (хотя иногда это долго)
- стоимость обратного инжиниринга может быть сделана выше, чем стоимость, произведенная программой, возможно, при более высокой стоимости, чем стоимость, произведенная программой.
Если вы достаточно долго смотрите на индустрию программного обеспечения:
- DRM: сбой
- Лицензии: отказ
- Лицензии с веб-активацией: сбой
Если это стоит взломать, это будет взломано.
Самый простой способ - сделать его незаконным с помощью лицензирования. Попытка обеспечить это технически невозможна, и только вредит вашим пользователям (пользователю?): Что, если они переустановят ОС, или заменят сетевую карту, или обновят свой ЦП?
Не существует решения, которое было бы на 100% эффективным, и не было бы решения, которое было бы "самым простым", а также "очень эффективным". Как правило, существует целый ряд "эффективных" и "сводит пользователей с ума", к которым вы должны быть очень осторожны.
MAC-адрес не является ужасным местом для начала. Изменить ваш MAC-адрес не так сложно, но если у вас есть несколько экземпляров одного и того же MAC-адреса в одной подсети, их машина не будет работать, поэтому хорошо, если многие люди в одной и той же подсети не запускают ваш продукт без лицензий. Проблема с MAC заключается в том, что на настольных компьютерах MAC изменяется при изменении сетевой карты; это ставит галочку на ваших платящих пользователей.
Файл лицензии, как правило, лучше, чем изменение двоичного файла. Однако вы должны подписать файл лицензии, чтобы его нельзя было легко изменить.
Ваше приложение всегда является самым слабым звеном. Выделенный злоумышленник просто удалит тест из вашего приложения. Универсального решения этой проблемы не существует. Хороший подход всегда заключается в том, чтобы "сохранять честность честных людей", упрощая правильное лицензирование вашего приложения и позволяя пользователю определить, сделали ли они это. Вы можете легко потратить огромные суммы денег, пытаясь раздражать людей, которые никогда не заплатят вам.
Я думаю, что мой ответ на другой вопрос применим здесь.
Это юридическая проблема, а не технологическая проблема. Ваша цель должна состоять в том, чтобы облегчить людям, которые хотят убедиться, что они имеют действующие лицензии на ваше программное обеспечение. Вместо того, чтобы защищать свой код от людей, которые хотят его украсть, вы должны сосредоточиться на том, чтобы помочь клиентам, которые обеспокоены случайным использованием его без надлежащей лицензии.
Я также повторю свой комментарий от еще одного вопроса:
Я думаю, что "держать честных людей честными" - это правильный выбор для решения этой проблемы. Ничто не может быть криптографически безопасным, но наличие какого-то уникального ключа или номера для каждой лицензии может на самом деле облегчить бизнес-клиентам учет их программного обеспечения, что повышает ценность вашего продукта. Обременительная DRM (которая не работает), направленная на то, чтобы помешать преступникам (которые никогда бы не заплатили), является просто препятствием для оплаты клиентов.
Если вы хотите создать только одну копию вашего исполняемого файла и если у вас есть доступ к машине, на которой вы должны установить исполняемый файл, то можно жестко закодировать MAC-адрес в свой исполняемый файл. Если вы хотите распространять более одной копии вашего исполняемого файла и если у вас нет доступа ко всем машинам, то вы можете закодировать исполняемый файл, чтобы потребовать файл лицензии, сгенерированный с MAC-адреса машин. Это своего рода активация программного обеспечения.