Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #66, МАЙ 2006 г.

копаемся в броне

КРИС КАСПЕРСКИ АКА МЫЩЪХ

Спецвыпуск: Хакер, номер #066, стр. 066-062-3


Надежнее всего сканировать диск на предмет поиска самых разных файлов и смотреть на дату их создания, причем не только брать дату создания/последней модификации самого файла, но также извлекать «штамп времени» из заголовков PE-файлов и динамических библиотек, которые можно обнаружить в своем адресном пространстве без всякого обращения к файловой системе. Пользователь же скачивает новые версии различных разделяемых библиотек, а многие антивирусы и другие «сторожевые» программы устанавливают модули, проецируемые на все процессы сразу. Конечно, данная методика определения времени не очень точна и годится лишь для грубой оценки верхней границы времени использования. Однако, учитывая наличие службы Windows Update и довольно частный выход новых фиксов, точность определения вплотную приближается к одному-двум месяцам, что для trial-защит вполне достаточно.

сравнение различных версий одной и той же программы

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

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

утилита fc.exe из штатной поставки Windows показывает, что время окончания испытательного срока «прошито» в файлах e32.mac и g32.exe

$fc /b e32.maс e32.mac.old

Сравнение файлов e32.ma_ и E32.MAC.OLD

00000065: 06 05

00000066: D5 DD

00000067: C8 D4

Обложили со всех сторон — сохранять время первого запуска на компьютере пользователя нельзя (найдет и удалит), жестко прошивать его в теле программы тоже (сравнит две версии и «переведет» дату вперед в HIEW’е). Что же делать? Скремблировать данные и код! Попросту говоря, шифровать разные версии программы различными ключами, и тогда прямое сравнение ничего не даст, если только, конечно, взломщик не «распакует» программу, удалив распаковщик в небытие. Однако борьба с распаковщиками и пути противостояния ей — тема отдельной статьи.

когда криптография бесполезна

В последнее время распространилась мода на несимметричную криптографию, цифровые подписи и прочие сертификаты. Именно таким образом защищен The Bat. Создать генератор ключей, располагая только той информацией, которая заключена в защищенной программе, действительно невозможно. Потребуется секретный ключ, а он есть только у разработчика защиты. Что делать? Атаковать локальную сеть компании-разработчика? Так ведь посадят!

Назад на стр. 066-062-2  Содержание  Вперед на стр. 066-062-4