ВУЗ:
Составители:
Рубрика:
145
С учетом сказанного можно сформулировать основные рекомендации, на
основе которых можно создавать программы с достаточно трудно раскры-
ваемой системой защиты.
1. Не поставлять исходные тексты программы, по крайней мере те
фрагменты, которые обеспечивают защиту от копирования и т.п.
2. Для хранения данных, связанных с системой защиты, не
использовать прямой текстовый формат, либо предварительно
зашифровывать секретную часть.
3. Текстовые константы, связанные с защитой (например постоянные
пароли, скрытые каталоги, имена опорных секретных файлов), следует
шифровать уже в исходном тексте, так как даже после трансляции
текстовые константы легко читаются в exe- или com-файле с помощью
любого текстового редактора.
4. Запутывать видимую логику секретной части программы.
5. На время работы секретной части запретить прерывания, что
существенно, хотя и не до конца, затруднит трассировку отладчиком.
6. На время работы секретной части временно запортить (а потом
корректно восстановить!) жизненно важные области операционной системы
(вектора прерываний, таблицы распределения памяти, флаги, ключи и т.п.) в
расчете на максимальное затруднение отладки.
7. В процессе работы секретной части контролировать (по
возможности скрыть сам этот контроль) время: слишком большие задержки
реального времени свидетельствуют об отладке в пошаговом режиме.
8. Нарушить (но потом восстановить) правильную работу стека -
сердца вызова процедур, в том числе обслуживающих программные и
аппаратные прерывания. Любой отладчик непременно использует стек
(программный и
аппаратный). Если сделать так, что любая команда push
будет что-либо портить, то это навсегда отравит жизнь "человеку-с-
отладчиком". Например, можно перенести стек в область с системными
данными и тогда каждая команда push будет вызывать такую лавину
всевозможных (и не всегда безболезненных) событий, выслеживание логики
причин которых может увести весьма далеко от
первоначальной цели
взломщика.
Следует предостеречь только об одном. Всякое запутывание секретной
части программы в той же мере портит жизнь самому разработчику при ее
отладке. Поэтому нужно вначале сделать и отладить защиту, а потом начать
поэтапное ее "запутывание". Впрочем, тонкие виды защиты требуют весьма
высокой квалификации разработчика, что и является основным
фактором ее
надежности. Давать банальные рекомендации такому специалисту нет ника-
кой необходимости.