Smirnov писал(а):Ну так или иначе всё сводится к одной проверке, всего одной, от этого не уйдёшь.
В хорошей защите эта проверка не одна: сначала самая простая при запуске программы, чтобы сообщить обычному пользователю, что нужно вставить ключ. Затем ещё куча проверок различными способами в разных местах программы, управление на которые может попадать очень редко даже при активном использовании программы. При этом такие проверки обычно не сообщают тут же об отсутствии ключа, а вызывают ошибки в программе(чтобы нельзя было быстро найти код проверки). Так же к этому ещё добавляются проверки контрольной суммы программы, антиотладка и т.п.
Smirnov писал(а):И я ещё сразу учитывал что исполняемый файл будет покрыт защитой превращающий понятный код в кашу - т.е. криптором.
Нормальные протекторы тоже снять непросто - приходится вручную разбирать весь код загрузки протектора только для того чтобы запустить программу под отладчиком. Я уже не говорю о таких вещах как CopyMem армадиллы и Ring0-протекторах(самый известный из которых - StarForce) - они даже дамп сделать не дадут.
Smirnov писал(а):Про шифрование части или всего исполняемого файлы я не говорю - это тот же уровень что и занопить - чуток посложнее но если найти условный переход смогут то и взять из памяти или потока между ключом и компом расшифрованный файл не будет проблемы.
Во-первых "взять из памяти или потока между ключом и компом расшифрованный файл" не так то просто - его нужно взять в тот момент, когда управление только-только попало в основную часть программы и она ещё не успела поменять данные. И во-вторых любой нормальный протектор вставит проверки своего наличия в код основной программы, код в которых придётся искать и восстанавливать вручную. Так же любой уважающий себя протектор спрячет всю таблицу импорта, так что её тоже придётся восстанавливать вручную.
Smirnov писал(а):Но тогда такой вопрос: почему всё таки так легко взламываются ключи и подставляется эмулятор, неужели никак не проверить программно на хуки хотя-бы функции чтения LPT или USB - если эти хуки легко видны касперычем, вебом. avz и прочим по работающим даже не под администратором. Эти хуки ставятся в наглую и в явном виде (на всех 5 видах донглов, хаспов и прочих устройств что попадались под руки).
Потому что эти эмуляторы знают все способы, которые использует для их обнаружения защищённая программа и защищаются от них.
Smirnov писал(а):И почему не могут сделать защиту например с открытым и закрытым ключом? Так чтоб открытым ключом шифрования проверялось наличие аппаратного ключа и он был каждый раз разный.
Чем сложнее ключ тем он дороже, так что проще сделать защиту программы, чтобы из неё не вытащили алгоритм проверки. Тем более что, кроме эмулятора есть другие способы взлома.