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