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

Крэкеры vs Авторы защит

Андрей Каролик

Спецвыпуск: Хакер, номер #057, стр. 057-104-2


мыщъх: Взломать можно все, поскольку в крайнем случае программу можно переписать заново, что называется from scratch (с чистого листа), однако смысла в этом будет немного. Если речь идет о демонстрационной версии, то надежнее всего просто ограничить функциональные возможности. Например, выбросить модуль, ответственный за печать. Теоретически хакер может реализовать его и самостоятельно, но практически ни у кого мазы нет.

Харон: Нет. Есть старая дефиниция: "Все, что один человек сделал, другой завсегда сломать сможет" (с). Но, безусловно, существуют защиты, ломать которые нерентабельно. Трудозатраты на взлом могут существенно превышать стоимость (копии) продукта (и требовать большего времени), и заниматься в этом случае взломом будут только "пионеры". А сделать защиту, не взламываемую на этом уровне, вполне реально. Однако следует помнить, что стоимость взлома прямо пропорциональна стоимости самой защиты. Если мне не изменяет склероз, теоретический максимум отношения этих стоимостей - около десяти. Причем это число справедливо только для специализированных защит: любая внешняя защита гарантированно имеет отношение намного хуже. Если рассматривать аппаратные защиты, то там это соотношение можно увеличить, но... не качественно.

XS: Какие отладчики и другие программы ты используешь в работе? Что ты используешь и для чего, то есть поподробнее.

мыщъх: Предпочитаю классику. Под Windows: дизассемблер IDA Pro, отладчик SoftIce (иногда OllyDbg), hex-редактор QVIEW. Под Linux: дизассемблер опять-таки IDA Pro, отладчик gdb и lince (неофициальный порт SoftIce), hex-редактор HT-edit. Все это хозяйство крутится под VMWare, как правило, одновременно работает три SoftIce'а и один linice в разных окнах. Красота! И никаких проблем с перезагрузками основной операционной системы.

Харон: А это вопрос абсолютно непринципиальный. Кто к чему привык, тот тем и пользуется. Я, например, отладчиком вообще очень редко пользуюсь: мне идой (ida) найти проще. А если пользуюсь, то только консольными, но это, повторюсь, вопрос вкуса. Я люблю консоль просто потому, что глаза меньше устают.

XS: Имеет ли какое-либо значение то, на каком языке написана программа? Или ломают и защищают только на общих принципах независимо от языка?

мыщъх: Разница есть. Проще всего ломаются программы, написанные на классическом С и работающие через Win32 API. С приплюснутым С, из-за обилия косвенных вызовов виртуальных функций, справиться уже сложнее, и для эффективного взлома отладчик и дизассемблер приходится запрягать в одну упряжку. Программы, написанные на Delphi, Builder или Visual C++ с MFC легко ломаются только тогда, когда библиотечные функции распознаются ИДОЙ (а происходит это далеко не всегда), еще выручает декомпилятор DeDe. Сложнее всего ломаются программы, скомпилированные в p-код или шитый код: Visual Basic, Forth и т.д. Особенно если программист не ограничился посимвольной сверкой пароля (она выполняется библиотечными функциями, которые легко перехватить), а реализовал целый алгоритм.

Назад на стр. 057-104-1  Содержание  Вперед на стр. 057-104-3