У всех известных аппаратных средств защиты (HASP и тому подобные) общий недостаток — их легко можно обойти просто удалив проверку наличия ключа в защищаемой программе.
Что получится если аппаратный ключ будет хранить данные, необходимые для работы программы ? Например вместо хранения текстовых данных и графики в ресурсах exeшника
хранить их внутри ключа. Для компьютерных игр: можно например хранить во flash памяти ключа 3D модели используемые в игре. Если в программе есть какие-то не особо
сложные вычисления, можно их выполнять с помощью микроконтроллера, встроенного в ключ. То есть суть понятна — аппаратный ключ является частью логики работы программы.
Собрал такой девайс, по сути это просто флешка на 256 Kb, считать данные с которой можно только зная протокол работы с ней. И написал тестовую прогу: при наличии
девайса в порту USB всё работает нормально а при его отсутствии все пункты меню программы заменены строкой "Вставьте USB ключ". Эта строка затирается данными,
считываемыми из USB ключа и в результате все пункты меню начинают отображаться нормально.
Собрать такой девайс не проблема, главное будет ли спрос ?