Электронные ключи
Электронный ключ (также аппаратный ключ, иногда донгл от англ. dongle) — аппаратное средство, предназначенное для защиты программного обеспечения (ПО) и данных от копирования, нелегального использования и несанкционированного распространения.
Принцип действия электронных ключей Ключ присоединяется к определённому интерфейсу компьютера. Далее защищённая программа через драйвер отправляет ему информацию, которая обрабатывается в соответствии с заданным алгоритмом и возвращается обратно. Если ответ ключа правильный, то программа продолжает свою работу. В противном случае она может выполнять любые действия, заданные разработчиками — например, переключаться в демонстрационный режим, блокируя доступ к определённым функциям.
Технология защиты проверка наличия подключения ключа; считывание с ключа необходимых программе данных в качестве параметра запуска; запрос на расшифрование данных или исполняемого кода, необходимых для работы программы (предварительно разработчик защиты шифрует часть кода программы и, понятно, непосредственное выполнение такого зашифрованного кода приводит к ошибке); проверка целостности исполняемого кода путём сравнения его текущей контрольной суммы с оригинальной контрольной суммой, считываемой с ключа; запрос к встроенным в ключ часам реального времени (при их наличии) и т. д.
Обход защиты Для того чтобы заставить программу работать так, как она работала бы с ключом, можно или внести исправления в программу (взломать программный модуль), или эмулировать наличие ключа.При эмуляции никакого воздействия на код программы не происходит, и эмулятор, если его удается построить, просто повторяет все поведение реального ключа.Взлом программного модуля - исследуется логика самой программы, с той целью, чтобы, проанализировав весь код приложения, выделить блок защиты и деактивировать его. Взлом программ осуществляется с помощью отладки (или пошаговое исполнение), декомпиляции и дампа оперативной памяти.