Звездный отряд крис касперски ака мыщъх Хакер, номер #080, стр. 080-062-2 Таким образом, замеряя время чтения различных пар секторов, мы можем приблизительно определить их взаимное расположение на спиральной дорожке. У каждой партии диска оно будет своим (ведь плотность секторов на 1мм и крутизна спирали неодинакова и варьируется от партии к партии). Чтобы побороть упреждающее считывание (которым «страдают» многие приводы), защита должна читать сектора в порядке убывания их номеров. Так же она должна измерять скорость вращения привода, чтобы, во-первых, определить постоянство временных замеров, а во-вторых, скорректировать формулу для вычисления угла, ведь как легко показать, чем быстрее вращается диск, тем скорее «уплывает» сектор. Именно так StarForce и поступает. Ниже приведен протокол работы защиты, перехваченный программой BusHound (при этом использовался SCSI-накопитель, поскольку с IDE защита работает напрямую и программный перехват уже не спасает). Сначала защита выполняет профилировку поверхности, определяя время одного оборота, исходя из которого, будет рассчитываться допуск на отклонение ключевых характеристик: [профилировка спиральной дорожки (все номера секторов шестнадцатеричные)] 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 ms. Затем защита делает некоторые несущественные операции, (то есть очень даже существенные, но не суть важные) и приступает к измерению углов. Вот так выглядит протокол для оригинального диска: [измерения угла между секторами (оригинальный диск)] 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 ms дол 12 ms, т.е. больше чем в два раза! А теперь посмотрим, как выглядит протокол обмена с копией: [измерение угла между секторами для копии диска] 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 Вроде бы, все так же, как в прошлый раз, но, присмотревшись повнимательнее, можно заметить, что перескок происходит не межу 051ddd и 051dd2 секторами, как раньше, а между 051dd2 и 051dc6, т. е. на один шаг позже. Вот это-то и отличает скопированный диск от оригинала! |