Как получить уникальную аппаратную/программную подпись от Windows-ПК в c/С++

Я разрабатываю небольшое приложение для Windows с использованием С++, и я хотел бы получить какой-то отпечаток программного обеспечения/оборудования на ПК, чтобы я мог разрешить запуск приложения только на некоторых компьютерах.

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

Ответ 1

В основном это зависит от того, насколько вы хотите связать свое программное обеспечение с базовым оборудованием. Например, вы можете получить некоторую информацию об оборудовании из реестра, прочитать MAC-адрес с карты LAN, получить производителя gfx, идентификатор CPU и т.д. И хэш всех этих данных.
Затем вы можете использовать этот хэш как challenge код, который отправляется вашей компании. Затем клиент получает подписанную (с вашим личным ключом) версию этого хэша.
При запуске ваше приложение может проверить, хороша или плоха подпись хэша (т.е. Была подписана вашей компанией).
Это не только связывает ваше программное обеспечение с определенной аппаратной конфигурацией, но также заставляет взломщики исправлять ваше приложение (потому что им нужно будет исправить открытый ключ из вашего исполняемого файла и заменить его, чтобы написать keygen). Многие люди рассматривают возможность двойной установки трещины, полученной из разных источников, в отличие от того, как просто ввести действительный серийный номер, скопированный из кейгена.

Edit:
Чтобы проверить подпись хэша, ничего из RSA над DSA - ECC. Я могу порекомендовать Crypto ++ или libTomCrypt для этого.

Ответ 2

Нет надежного способа сделать это на ванильном ПК; люди пытались годами. Проблема в том, что вы можете в любой момент изменить любой компонент, включая CPU и BIOS ROM. Ближайшие люди пришли к использованию криптографически защищенного " dongle", но это оказалось как неудовлетворительным в работе, так и не очень безопасным.

Если вы придумаете что-нибудь, запаситесь им; это было бы очень полезно.

Ответ 3

Как говорили другие, нет ничего идеального для того, чего вы хотите. Я сделал половинчатую попытку для подобной проблемы и закончил с сочетанием идентификатора объема диска (не хорошо, потому что он может быть переформатирован) и ключ ОС (из окон).

В конце концов, я не тратил много времени на это, как будто люди действительно хотят взломать ваше программное обеспечение, они, вероятно, смогут это сделать. Я оставил dinky лицензионную "защиту", но она довольно бедна.

Проведите время/усилие, чтобы заставить их хотеть купить его, сделав его выдающимся.