Блог → О защите компьютерных программ от вскрытия. Часть 5

В сегодняшней заметке о защите программ речь пойдёт сразу о двух блоках - сравнения характеристик среды и ответной реакции. Оба из них, безусловно, очень важны, причём каждый по-своему. Блок для сравнения характеристик среды традиционно (и при этом, неизбежно) является одним из самых уязвимых мест любой защиты программного продукта. Задумайтесь сами, ведь зачем детально разбираться в логике защиты (порой очень сложной и запутанной), когда можно просто "подправить" результат сравнения, и вуаля - защита снята! Поэтому порой этот блок отсутствует и его выполняет человек (например, в некоторых системах с шифрованием информации сравнение производится человеком на этапе её использования).

Блок сравнения характеристик среды

Его же, коротко, будем называть БСХС. Он может иметь три варианта реализации. Первый - множество операторов сравнения того, что есть, с тем, что должно быть. Второй вариант - генерация исполняемых команд в зависимости от результатов работы защитного механизма (к примеру, в первом байте хранится исходная ключевая контрольная сумма BIOS, а во второй байт в процессе выполнения записывается подсчитанная контрольная сумма в процессе выполнения задачи. Суть блока сравнения: вычесть из первого байта значение второго байта, а полученный результат добавить к каждой ячейке оперативной памяти в области DOS. Ясно, что если суммы не совпадут, то и DOS навряд ли продолжит функционировать. Третий - выполнение ряда арифметических операций над данными в зависимости от результатов работы защитного механизма.

Блок ответной реакции

Блок ответной реакции (а коротко - БОР) реализует ответные действия "сломанной" программы. Такими действиями могут быть:
- "самоубийство" программы или частичное уменьшение числа выполняемых ею функций;
- необратимая перестройка окружающей среды под свои потребности, что приводит к невозможности работать на этом компьютере с любыми другими пакетами, кроме данного;
- "издевательство" над пользователем, т.е. замедление ответных действий, проигрыши похоронных маршей или гимнов, натужное гудение или противное пищание в случайные моменты времени, изречение угроз страшным голосом, вывод посторонних изображений, добавление комментариев к вводимой и выводимой информации и далее в таком же духе;
- разрушение окружающей среды, в том числе запуск в программную среду вирусов и создание в ней "троянов" (самый злостный, и безусловно, неправильный способ).

Для незнакомых с терминологией напомню: "троян" (сокращение от "троянского коня", подарка по вине которого пала Троя) - это компьютерная программа, выполняющая вредительские действия по отношению к вашему компьютеру. Главная её особенность заключается в том, что запустить её на выполнение, а тем самым - уничтожить или покалечить собственные файлы должен лично пользователь (хотя сейчас и это необязательно, достаточно посетить "плохие" сайты и троян сам "сядет" в систему, используя ту или иную уязвимость). Данная программа, как правило, имеет интригующее имя и предлагает своему новому хозяину запустить её на выполнение (часто приходит по электронной почте под видом красивых картинок и скринсейверов). Для того чтобы узнать её предназначение, зачастую пользователь собственноручно её и запускает. Создается "троянский конь" очень просто. Пишете программу, состоящую из оператора по удалению данных и создаете ЕХЕ-файл. Затем записываете полученный ЕХЕ-файл в ваш защитный модуль и в случае нарушения условий прямо из программы копируете "троян", к примеру, прямо в главный каталог. Будьте уверены, не пройдет и месяца, как эту "новую" задачу обязательно (ради чистого любопытства) кто-нибудь запустит на выполнение.

Созданный вами блок ответной реакции может сильно демаскировать систему защиты. С целью снижения демаскирующего эффекта применяются идеи кратности ответной реакции (только после определенного числа запусков) и отложенности возмездия (ответная реакция происходит через определенное время или при срабатывании куска программы, далеко отстоящего от блока сравнения характеристик среда).

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

Отрицательным моментом является возникновение антирекламы, поскольку ответная реакция может быть воспринята, как свойства самого продукта в незащищённом виде (а в условиях открытого общения в Интернете, это может стать фатальным фактором, который погубит вашу репутацию). С другой стороны, эффект ответной реакции может быть усилен, если она соответствующим образом описана в документации. Возможно описание не всех ответных воздействий или некоторое их преувеличение.

Ну и, под конец, немного расскажу о демонстрационных версиях программ, которые с некоторых пор стали очень популярны (действительно, почему не дать пользователю попробовать продукт, прежде чем он его купит). Следует сразу же отвергнуть способ создания демоверсий путём установки переключателя в блоке ответной реакции, реализующего частичную потерю программой своих функций. Как показывает практика, такая "демоверсия" легко и непринуждённо превращается в обычную, причём силами даже не самого одарённого хакера. Демоверсия обязательно должна быть специальной программой, у которой недопустимые (платные) функции должны физически отсутствовать. Кроме того, должны отсутствовать все защитные механизмы и даже какие-либо намёки на них.