Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Взлом ПО.docx
Скачиваний:
115
Добавлен:
23.11.2018
Размер:
3.85 Mб
Скачать

Технологии защиты программного кода от исследования и отладки

  1. Проверка даты и времени

При запуске программа проверяет текущую дату (год, месяц, день и т.д.), если она не совпадает с запланированной, то программа отказывается работать или работает неправильно. Для обхода защиты злоумышленник перехватывает в программе проверку даты и устанавливает требуемую дату.

  1. Фиксированное количество запусков

Trial-программы запускаются фиксированное число раз: программа записывает количество запусков в реестр (или в «специальный» файл) при установке (или при первом запуске) на компьютер пользователя. Для обхода защиты злоумышленник может воспользоваться, например, программами-мониторами, отслеживающими обращение программы к реестру (или каким-либо файлам).

  1. Шифрование всей программы или ее частей

Программа разбивается на несколько частей. Загрузчик программы загружает первую часть программы в память и расшифровывает его в памяти. После расшифровки управление передается на эту часть программы. После того как эта часть программы отработала, загрузчик удаляет ее из памяти, расшифровывает вторую часть программы в памяти, передав на нее управление и т.д. После того как вся программа отработает, загрузчик удаляет ее из памяти. На этом методе основана работа некоторых упаковщиков и протекторов.

  1. Проверка на основе динамически изменяющихся параметров

Параметры каждого компьютера уникальны, можно выдавать регистрационные данные на конкретный компьютер. Недостаток метода – частая смена конфигурации компьютера.

  1. Регистрация online

Программа в реальном времени связывается с сайтом разработчиков и передает туда некоторый код (серийный номер диска и др.), в ответ программе передается регистрационная информация. К недостаткам метода относят безопасность передаваемых данных, обязательное наличие доступа в Интернет.

Как не надо проектировать защиту программ

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

Защита не должна основываться на одном лишь предположении, что ее не смогут изучить. Отсутствие исходных текстов не является препятствием к изучению и модификации программы.

Рассмотрим защиту, основанную на вводе регистрационного кода. Злоумышленник в этом случае может:

  • установить точки останова на функции считывания текста;

  • «отловить» адрес памяти, по которому будет записан пароль.

Для затруднения обхода защиты нельзя:

  • использовать стандартные обработчики компонентов (кнопок, флажков и т.д.), организовывать проверки в цикле сообщений;

  • применять стандартные способы ввода пароля, лучше написать свои визуальные компоненты для ввода регистрационного кода;

  • хранить введенный код в одной части программы;

  • хранить введенный код открытым текстом;

  • анализировать пароль сразу после его ввода;

  • проверять код только в одном месте;

  • создавать для проверки функцию или библиотеку;

  • проверять пароль только одним алгоритмом;

  • выполнять действия, связанные с проверкой, сразу после самой проверки (желательно добавить отвлекающие функции проверок);

  • использовать переменную для хранения результатов проверки;

  • хранить результаты проверки в реестре или на диске;

  • определять дату и время стандартными способами и т.д.