Крис Касперски - Восстановление данных. Практическое руководство
Именно так Star-Force и поступает. Ниже приведен протокол работы защиты, перехваченный программой BusHound (рис. 10.5). При этом использовался накопитель SCSI, поскольку с IDE защита работает напрямую, и программный перехват уже не спасает.
Рис. 10.5. BusHound за работой
Сначала защита выполняет профилировку поверхности, определяя время одного оборота и оценивая величину разброса, на основании которого будет рассчитываться допуск на отклонение ключевых характеристик. Результаты профилировки спиральной дорожки представлены в листинге 10.4. Обратите внимание на то, что все номера секторов представлены в шестнадцатеричном формате.
Листинг 10.4. Профилировка спиральной дорожки (все номера секторов представлены в шестнадцатеричном формате)
049634 292ms
04961f 192ms
04960a 8.5ms
0495f5 8.3ms
0495e0 8.5ms
0495cb 8.5ms
0495b6 8.5ms
0495a1 8.5ms
04958c 8.5ms
049577 8.5ms
049562 8.5ms
04954d 8.5ms
049538 8.5ms
049523 8.5ms
04950e 8.7ms
... ...
048e7e 8.1ms
048e69 8.2ms
048e54 8.2ms
048e3f 8.2ms
048e2a 8.2ms
048e15 8.2ms
048e00 8.2ms
Как видно, каждый последующий номер на 15h меньше предыдущего (приблизительно столько секторов и содержится на данном витке спирали), а время чтения сектора колеблется от 8,1 до 8,7 миллисекунд.
Затем защита делает некоторые несущественные операции (т.е. очень даже существенные, но не суть важные) и приступает к измерению углов. Протокол измерений углов между секторами оригинального диска показан в листинге 10.5.
Листинг 10.5. Измерения угла между секторами (оригинальный диск)
051dfe 25ms
051dfa 7.3ms
051df5 6.6ms
051dee 6.2ms
051de6 5.5ms
051ddd 5.2ms
051dd2 12ms
051dc6 12ms
051db9 11ms
051daa 11ms
051d9a 10ms
051d89 10ms
051d76 9.9ms
051d62 9.1ms
051d4c 8.8ms
051d35 8.0ms
Сразу бросается в глаза тот факт, что шаг убывания между секторами не остается постоянным, а плавно растет. Это означает, что защита перебирает различные комбинации X и Y, засекая в какой момент происходит "перескок" сектора, вынуждающий ждать целый оборот. В данном случае он расположен между секторами 051ddd и 051dd2. Время доступа скачкообразно увеличивается с 5,2 мс до 12 мс, т.е. больше чем в два раза!
А теперь посмотрим, как выглядит протокол обмена с копией (см. листинг 10.6).
Листинг 10.6. Измерение угла между секторами (копия)
051dfe 29ms
051dfa 7.3ms
051df5 6.6ms
051dee 6.2ms
051de6 5.5ms
051ddd 5.1ms
051dd2 4.7ms
051dc6 12ms
051db9 11ms
051daa 11ms
051d9a 10ms
051d89 10ms
051d76 9.9ms
051d62 9.2ms
051d4c 8.8ms
051d35 8.0ms
Ha первый взгляд может показаться, что все осталось по-прежнему. Однако, присмотревшись внимательнее, можно заметить, что перескок происходит не между секторами 051ddd и 051dd2, как раньше, а между секторами 051dd2 и 051dc6, т.е. на один шаг позже. Вот это-то и отличает скопированный диск от его оригинала!
Как это ломают
Скопировать физическую структуру спиральной дорожки нельзя. Во всяком случае, пока. Но кое-какие шаги в этом направлении уже сделаны. На рынке появились приводы с переменной плотностью записи, например, Plextor Premium; правда, поддержки со стороны программного обеспечения для копирования дисков пока еще нет. Мне удалось создать экспериментальный копировщик, имитирующий структуру оригинальной дорожки путем переупорядочивания секторных номеров, однако до законченного продукта он так и не был доведен. Имеются и другие идеи, однако в долговременной перспективе все они нежизнеспособны и разработчики Star-Force их легко обойдут.
Перед проверкой ключевых характеристик спиральной дорожки защита выполняет профилировку привода, чтобы оценить стабильность всех временных характеристик. Чем качественнее привод, тем жестче проверка и, соответственно, наоборот. На разболтанных приводах защита вынуждена "снижать планку", иначе даже лицензионный диск опознается как поддельный, а вот этого уже допускать нельзя. Отсюда вывод — копируем диск на скверную болванку и запускаем ее на разболтанном приводе. Кстати, на некоторых приводах можно даже специально расстроить автоматический регулятор скоростей, за это отвечает специальный подстроечный резистор. Существует некоторый шанс, что скопированный диск опознается как оригинальный. Если же ничего не получится, необходимо повторить фокус на другой партии болванок от другого производителя. Достаточно многие пользователи сообщают, что им удавалось скопировать защищенные диски на CD-RW. За счет невысокой отражательной способности перезаписываемые носители читаются гораздо хуже и, естественно, не так стабильно. Также полезно использовать приводы, которые не позволяют себя "тормозить" с помощью утилит наподобие CDSlow. Если при профилировке диска разброс замеров превышает некоторую величину, Star-Force пытается перевести привод на более низкую скорость.
По моему опыту, для гарантированного копирования диска на CD-R нужно затратить не менее 10 болванок от различных производителей с различной геометрией спиральной дорожки, для измерения которой можно использовать мою утилиту, которую можно найти на прилагаемом к этой книге CD. Конечно, 10 болванок — это много, но лицензионная копия обойдется ничуть не дешевле, а даже дороже. Как правило, квалифицированный хакер может "отвязать" игру от CD самое большее за день (при условии, что он уже знаком со Star-Force), однако универсальный взломщик еще никто не написал, поэтому с каждой программой приходится воевать индивидуально.
Действовать можно так. Запускаем программу Alcohol 120% (рис. 10.6) и создаем образ диска, в типе данных выбрав опции Star-Force 1.x/2.x/3.x или Securom *NEW (V4.x). При этом автоматически устанавливается флажок Измерение позиционирования данных (Точность: высокая). Опция Чтение субканальных данных с текущего диска должна быть сброшена, положение всех остальных — некритично (на некачественных дисках опция Быстрый пропуск ошибочных блоков иногда приводит к проблемам). Скорость измерения позиционирования обычно рекомендуется ставить на минимум, и в течение всей операции не выполнять на компьютере никаких других работ. Возможно, на этом этапе вам придется поэкспериментировать. Например, мой привод TEAC-52x нормально измеряет геометрию спиральной дорожки (также называемую топологией) при 52x, а вот при снижении скорости начинает вести себя непредсказуемо.
Рис. 10.6. Настойка программы Alcohol 120%
Снятый образ не может быть непосредственно записан на новый диск. Он предназначен специально для эмулятора. Одни предпочитают использовать эмулятор, встроенный в программу Alcohol 120%, другие же выбирают Daemon Tools. Для использования встроенного эмулятора в Alcohol 120% достаточно выбрать из меню команды Настойки|Виртуальный диск, указать любое разумное количество виртуальных дисков, отличное от нуля, и, при желании, установить опцию Перемонтировать образы при перезагрузке системы, чтобы они монтировались автоматически.
Древние версии Star-Force доверчиво работали с виртуальным образом, принимая его за подлинный, но затем все изменилось. Если в системе есть хотя бы один IDE-привод, защита требует вставить лицензионный диск именно в IDE. Да! Даже если остальные диски — вполне законные накопители SCSI. Разумеется, можно просто отключить шлейф IDE от привода CD-ROM (или обесточить его), после чего виртуальный образ будет работать, как ни в чем не бывало. Естественно, все эти манипуляции должны проводиться при выключенном компьютере. Исключение составляют приводы, поддерживающие "горячую замену" (hot unplug). Как вариант, можно приобрести SCSI. USB или LPT CD-ROM. Наконец, можно воспользоваться программами типа Star-Force Nightmare, выключающими каналы IDE-каналы "на лету", однако новые версии Star-Force уже научились бороться с ними.
Что делать, если снятый образ не работает? Первым делом необходимо удостовериться, что образ снят правильно. Запускаем программу AdvancedMDSEditor.exe, открываем файл образа и смотрим — если форма кривой, характеризующей скорость чтения спиральной дорожки, имеет "выбросы" или дрожит (рис. 10.7), то снятый образ никуда не годится. В этом случае необходимо выбрать другую скорость и повторить операцию еще раз, или просто "сгладить" кривую, нажав кнопку Linear Interpolation или, что еще лучше, — Spline Graph, добившись максимальной "гладкости" кривой (рис. 10.8).