![](/user_photo/_userpic.png)
И что дальше?
Чем хакер отличается от юзеpа? - Хакеp подбирает пароль с третьего раза, а юзеp набирает с пятого.
Так что же – разработчики прикладного ПО могут спать спокойно? Да ничего подобного. Все вышеперечисленные методы эффективны, фактически, только для защиты от пользователей и начинающих хакеров.
Ломают электронные ключи, и очень легко ломают. Кто умеет держать в руках паяльник и имеет необходимое оборудование (минимум – цифровой осциллограф с памятью) – те снимают информацию непосредственно с разъема и делают аппаратные эмуляторы ключей. Кто паяльнику предпочитает отладчик – те определяют алгоритм обмена путем перехвата обращений к регистрам управления COM- и LPT-портами. При этом достаточно иметь один экземпляр легального ключа, чтобы определить если не вид функции F(x1,x2…xn), то хотя бы набор значений y в зависимости от набора входных аргументов x1…xn. Естественно, если один из аргументов является случайным числом или значением встроенного таймера или энергонезависимой памяти, то написание эмулятора сильно затрудняется; но в этом случае остается возможность просто “откусить” защитный модуль, подставив в соответствующих местах программы значения y’, вычисленные при использовании одного “легального” ключа. Защита от трассировки и отладчиков практически бесполезна - особенно при использовании могучего отладчика SoftIce (“Compuware NuMega”, www.numega.com). В частности, если убрать из этого отладчика его внешние API-функции (а такие патчи давно имеются в Интернете), защищаемая программа вообще никак не сможет обнаружить его присутствие, а все остальные функции процессора SoftIce эмулирует на уровне “виртуальной машины” (т.е. манипуляции со стеком, трассировка по INT 1 и INT 3, а также работа в режиме с запрещенными прерываниями в данном случае не помогут).
Так что - в области защиты программного обеспечения наблюдается обычная борьба щита и меча, брони и снаряда; средств защиты и средств ее взлома…
Вот такой вот прогресс с НТР.