::Главная страница ::Delphi/Паскаль :: Статьи ___ Часть 1 - Часть 3

Как написать программу, которую будет дешевле купить, чем сломать - 2

Я не стал подробно останавливаться на других средствах, но о них я упомяну чуть ниже, когда попытаюсь описать основные ошибки в созданных и предлагаемых защитах от копирования.

Серийные номера. Итак, самая распространенная защита, если это можно назвать защитой. Эта защита делится на три части. Первые самые ранние и легкие варианты этой защиты, которые, правда, встречаются и по сей день, это просто ввод некоей последовательности символов, которую программа сверяет с эталоном. Короче говоря, пароль. Обычно написание таких вещей сводится к такому виду:

TPasswordForm=class(TForm)
 …
 EditPassword : TEdit;
…
end;
…
procedure TPasswordForm.EditPasswordKeyPressed (Sender : TObject; var Key : char);
Begin
         If (Key=#13)
           Then begin
             …
             if EditPassword.Text<>OkPassword
               then begin
                 MessageBox(handle,'Неправильный серийный номер!',
     'Ошибка',MB_ICONHAND+MB_OK);
                 Close;
               end;
             …
           End;
End;
Давайте разберем эту "защиту". Существуют несколько способов войти в уже открытую дверь.
  1. Поставить брейк на функцию виндов GetWindowText (старый, описанный во всех учебниках) BPX GETWINDOWTEXT. Далее жмем F5, пущаем прогу. Когда брейк сработает, жмем F11 - выполняем функцию, потом ставим брейк на область памяти, куда это все записалось. Если сразу нет кода на проверку строки! Опять F5. Бах! И вот мы в коде, реализующем проверку. Далее смотрим данные в сверочной строке и выписываем на бумажку.
  2. Другой, более железный, способ. Поставить брейк на MessageBox - BPX MESSAGEBOX. Когда брейк сработает, мы поднимаемся вверх до ближайшего условного перехода. Опа! Опять у нас есть пароль!
  3. Далее, для совсем уж безграмотных. Т.е. неспособных определить, какие функции винды используются при регистрации! Так же этот способ подойдет, если программа не сообщает о неправильной регистрации. Те, кто придумал это, считают себя слишком умными. А если действительный покупатель программы опечатался? У него что, винт форматировать? Прогу сносить? В общем, в жизни не кричащих программ не бывает. Но все-таки, чтобы вы знали. Сл. способ, вводим рег-ную инфу, переключаемся в айс и ставим на место, где эта инфа хранится брейк по чтению. Когда брейк срабатывает, смотрим условные переходы. Там где идет сверка с эталоном или контрольная сумма, мы выписываем нужный серийный номер!
Вот и все! Есть еще методы, но мне о них только рассказывали. Та троица, о которой я рассказал, мной опробована на практике. И не было еще пока ни одной регистрационной проги, попадавшей ко мне, из которой я не вытащил бы серийные номера. Поверьте, это очень легко, особенно если набита рука.

Смотрим дальше. Есть разновидность проверки серийки - это ввод имени владельца и вычисления эталонной серийки. Также это может вычисляться из серийного номера винта, из версии биоса, из версии видео-биоса, ну и т.д. Не так много вариантов. Но самое главное! ПРИ СОБЫТИЙНОЙ ОТЛАДКЕ МЫ НЕ ИЩЕМ ПРАВИЛЬНЫЙ ПАРОЛЬ, МЫ ВЕШАЕМСЯ НА СОБЫТИЕ СВЕРКИ С ВВЕДЕННЫМ ПАРОЛЕМ!!! А как вы там вычисляете эталон, никого не мучает. Я все равно это перехвачу на 100%. Вы ограничены в этом методе защиты. Ваша программа уязвима. Ваше время потрачено зря. БУРЖУИНЫ СТАВЯТ ТАКУЮ ЗАЩИТУ, ЧТОБЫ НЕ ОСТАВЛЯТЬ ДВЕРЬ ОТКРЫТОЙ. Чтобы не каждый дурак сумел бы использовать прогу. Поверьте, там за бугром проще выложить пару десятков Зеленых Президентов, чем каждый раз дрожать запуская ломанную прогу. А то еще накапает кто-нибудь

Но это все лирика. Промежуточный итог и совет.

Итак, вы получили представление о мифе "достаточной защищенности регистрационных и шареварных программ". И если только вы не продаете свою программу где-нибудь в колхозе Ильича близ города Мухосранск, не используйте эти методы по прямому назначению, т.е. для "защиты". А используйте их для расстановки ловушек.

Дмитрий Логинов.

Тематические ссылки
Ваша ссылка Ваша ссылка

Обмен кнопками, ведение статистики, реклама.