<< Предыдущая

стр. 23
(из 39 стр.)

ОГЛАВЛЕНИЕ

Следующая >>

исследования и даже запуска при отсутствии аппаратного ключа HASP.
Так как секретная функция, являвшаяся на протяжении многих лет сердцем
ключей HASP, оказалась полностью раскрыта, не составляло большого тру-
да эмулировать ответы на запросы, которые Envelope делал к ключу. Следо-
вательно, любая программа, защищенная HASP Envelope, могла быть запу-
щена без ключа.
Глава 13. Использование навесных защит 155_


С появлением ключей семейства HASP4, в которых используются новые
Секретные ФУНКЦИИ HaspEncodeData И HaspDecodeData, обхОД Envelope При
отсутствии ключа стал невозможен. Но в ост&чьном протектор не способен
обеспечить высокую стойкость защиты. И при наличии ключа получение
незащищенной копии программы обычно не требует значительных усилий.


13.5.5. StarForce
Одной из составляющих StarForce Professional (системы, разработанной
компанией Protection Technology для защиты информации, распространяе-
мой на компакт-дисках) является протектор. В его функции входят проверка
подлинности компакт-диска и запуск защищенной программы, но только
в том случае, если введенный пользователем лицензионный код соответст-
вует установленному в приводе диску.
В StarForce применяется множество уникальных технологических решений.
Так, например, в защищенном исполняемом файле секция кода заполнена
одними нулями, а код защиты выполняется из динамической библиотеки
protect.dll, которая автоматически загружается и инициализируется при за-
пуске программы.
Большая часть защиты сосредоточена в драйвере, устанавливаемом в ядро
операционной системы. Именно там идет проверка подлинности компакт-
диска. Сам драйвер также зашифрован с целью затруднения его исследо-
вания.
Часть защищаемой программы хранится в псевдокоде и выполняется на
встроенной в протектор виртуальной машине.
Несмотря на то, что в Интернете можно найти подробные описания про-
цесса ручного снятия StarForce с некоторых программ, таких случаев
крайне мало. Частично это может быть объяснено тем, что для исследова-
ния защиты необходимо наличие оригинального компакт-диска, а также
тем, что основная категория продуктов, которые защищаются с помощью
StarForce, — компьютерные игры. А взлом защиты игр экономически не
очень выгоден, т. к. стоимость одной копии игры невелика, а период по-
пулярности весьма короток. Но надо отдать должное разработчикам — они
неплохо потрудились.
В целом StarForce на сегодняшний день является одним из самых серьезных
протекторов, который, к тому же, продолжает развиваться. Так недавно
компания Protection Technology объявила о выходе StarForce Soft 3.0 — сис-
темы защиты от копирования, основанной на ядре StarForce Professional 3.0,
но не использующей компакт-дисков.
156 Часть III. Как не надо защищать программы


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


13.6.1. Расход памяти
Прежде всего, протектор — это дополнительный объем кода. Если протек-
тор не поддерживает упаковку защищаемых данных, размер файла на диске
в процессе защиты увеличится на размер самого протектора. Правда, стоит
отметить, что при использовании сжатия защищенный файл может оказать-
ся меньше оригинального в несколько раз.
Также код протектора требует и некоторого количества оперативной памяти.
Но основной перерасход ресурсов оперативной памяти происходит по дру-
гой причине, связанной с особенностью загрузки исполняемых файлов
в Win32.
Практически все современные операционные системы имеют встроенную
поддержку так называемых файлов страничной подкачки (Page File или
Swap File). Вся логическая память, доступная выполняемым программам,
разбивается на страницы, и некоторые редко используемые страницы мо-
гут оказаться не в оперативной памяти, а на диске в файле подкачки. При
любом обращении к такой странице менеджер памяти выполняет опера-
цию чтения данных с диска в оперативную память (подкачку). Если в опе-
ративной памяти нет свободных страниц, одна из наиболее редко исполь-
зуемых страниц вытесняется из оперативной памяти на диск. В Win32
также существует механизм файлов, отображаемых в память (Memory
Mapped Files), который позволяет отобразить в адресное пространство лю-
бой дисковый файл.
Для ускорения загрузки и выполнения программ как раз и используется
отображение файлов в память. Вместо того чтобы читать с диска весь файл
программы, необходимые области просто отображаются в оперативную па-
мять нового процесса, а реальный перенос данных с диска производится
непосредственно в тот момент, когда происходит обращение к каждой кон-
кретной странице.
Более того, если загружается несколько копий одной программы, то те
страницы памяти, которые не меняются в процессе работы, размещаются
в оперативной памяти только один раз, независимо от числа процессов, ко-
торые эту память используют. Но как только один из процессов изменяет
Глава 13. Использование навесных защит 157

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

13.6.2. Безопасность
Разработчики протекторов стремятся использовать все доступные им воз-
можности для повышения стойкости. Однако иногда они забывают, что,
повышая защиту конкретной программы, они могут случайно ослабить не-
которые элементы защиты.

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

Станислав Винокуров, являющийся сотрудником компании SmartLine, Inc., об-
наружил, что некоторые версии драйвера StarForce содержат ошибку, позво-
ляющую программе сформировать правильные структуры данных и, восполь-
зовавшись установленным драйвером, выполнить любую последовательность
команд в режиме ядра.

Фактически, наличие данной ошибки позволяет получить неограниченный дос-
туп к ресурсам компьютера, на котором установлен драйвер StarForce, полно-
158 Часть III. Как не надо защищать программы

стью нейтрализовав защитные механизмы операционных систем семейства
Windows NT.

Правда по утверждению представителя компании Protection Technology, яв-
ляющейся разработчиком StarForce, в последних версиях драйвера эта ошибка
уже устранена.



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

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




1
немало удивит пользователя, совершенно уверенного в том, что он не запускал
никакого отладчика.
Глава 13. Использование навесных защит 159

Оказывается, защищенная программа так реагирует, в частности, на наличие
в памяти процесса с именем MSDEV.EXE. Для справки, MSDEV.EXE — это имя
основного файла Microsoft Developers Studio — набора средств разработки про-
граммного обеспечения, выпускаемого корпорацией Microsoft. Действительно,
MSDEV.EXE может использоваться и для отладки программ, но основное его
предназначение— именно разработка. То есть авторы PHOTOMOD считают,
что пользователи их продукта ни в коем случае не должны пользоваться сред-
ствами разработки, предоставляемыми компанией Microsoft.

Самое забавное в этом примере то, что после переименования MSDEV.EXE его
можно держать загруженным в памяти и это не повлияет на работоспособность
PHOTOMOD. Следовательно, такое обнаружение отладчика скорее мешает ра-
ботать обычному пользователю, чем ставит хоть сколько-нибудь ощутимое
препятствие на пути исследователя.

Другой пример касается нескольких версий программы Adobe Acrobat eBook
Reader, защищенной при помощи протектора РАСЕ InterLok. Защита использо-
вала драйвер, устанавливаемый в ядро операционной системы, и одной из
функций драйвера была борьба с отладчиком.

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

Если бы драйвер так реагировал только на отладочные исключения, возни-
кающие в контексте защищаемой программы, это еще можно было бы понять.
Но перезагрузка выполнялась при исключении в любом процессе. То есть по-
пытка отладки программы в том же Microsoft Developers Studio при загруженном
Adobe Acrobat eBook Reader почти неминуемо приводила к перезагрузке с по-
терей всей несохраненной информации.

В последних версиях Adobe Acrobat eBook Reader проблема, похоже, была ре-
шена путем объявления критическими только самых важных частей программы,
а не всей программы целиком.

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

Пр
pal
В прс
стоит
ва, чт<
содер)
не вое


14.1
Хорои
дачи ]
подхо,
СОСТЭ?
незат
Для т
танны
ствия,
легко
a Devi
При 1 .
сены
ни фу
рые э'
(напр]
файле
возни
кнопк
Дочно
этих с
адресу
1ва 14


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

<< Предыдущая

стр. 23
(из 39 стр.)

ОГЛАВЛЕНИЕ

Следующая >>