: Сравнение различных версий одной и той же программы
Разработчик защиты должен считаться с тем, что у взломщика наверняка окажется несколько различных версий одной и той же программы. Что это значит в практическом плане? А то, что сравнивая их между собой, хакер быстро найдет где хранится жестко прошитая дата истечения испытательного срока, серийный номер и эталонный ключ (если каждая версия отпираются "своим" ключом) и т.д.
Возьмем к примеру популярный текстовой редактор TSE Pro, часть защиты которого реализована на его собственном интерпретируемом языке, скомпилированным в байт-код, не поддающийся дизассемблированию. А готовых декомиляторов, увы, нет. Тем не менее защита снимается за считанные секунды простым сравнением двух версий, установленных в различное время на различные машины (вообще-то, в данном случае, редактор достаточно установить в разные каталоги, поскольку никаких проверок на скрытые знаки в нем нет).
Рисунок 4 редактор TSE Pro отказывается запускаться, мотивируя это тем, что 60-дневный испытательный период уже истек
Утилита 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
Листинг 1 дата истечения демонстрационного перерода, прошитая внутри одного из файлов редактора TSE Pro, была мгновенно найдена с помощью утилиты fc
Нас обложили со всех сторон — сохранять время первого запуска на компьютере пользователя нельзя (найдет и удалит), жестко прошивать его в теле программы тоже (сравнит две версии и "переведет" дату вперед в hiew'е). Что же делать? Скремблировать данные и код — вот что! Попросту говоря, шифровать разные версии программы различными ключами, тогда прямое сравнение ничего не даст, если конечно, хакер не "распакует" программу, удалив распаковщик к едреням, но борьба с распаковщиками и пути противостояния ей — тема для отдельной статьи.