Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПАЗИ.docx
Скачиваний:
13
Добавлен:
25.04.2019
Размер:
147.65 Кб
Скачать

23. Ошибки в созданных и предлагаемых защитах от копирования.

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

Ставится брейк на функцию GetWindowText и запускаем программу. Когда брейк сработает, жмем F11 - выполняем функцию, потом ставим брейк на область памяти, куда это все записалось. Далее смотрим данные в сверочной строке и выписываем на бумажку. Другой, более железный, способ. Поставить брейк на MessageBox - BPX MESSAGEBOX. Когда брейк сработает, мы поднимаемся вверх до ближайшего условного перехода. Далее, для совсем уж безграмотных. Так же этот способ подойдет, если программа не сообщает о неправильной регистрации. Те, кто придумал это, считают себя слишком умными. А если действительный покупатель программы опечатался? Но все-таки: вводим рег-ную инфу, переключаемся в отладчик и ставим на место, где эта инфа хранится брейк по чтению. Когда брейк срабатывает, смотрим условные переходы. Там, где идет сверка с эталоном или контрольная сумма, мы выписываем нужный серийный номер! Ввод имени владельца и вычисления эталонного номера. Также это может вычисляться из серийного номера ЖМД, из версии биоса, из версии видео-биоса, ну и т. д. Не так много вариантов. Но самое главное! При событийной отладке не ищется правильный пароль, реагируют на событие сверки с введенным паролем! А как вычисляетется эталон, никого не мучает, он перехватывается на 100%. Вы ограничены в этом методе защиты. Ваша программа уязвима. Зарубежом ставят такую защиту, чтобы не оставлять дверь открытой. Чтобы не каждый сумел бы использовать программу. Пользователям на западе проще заплотить, чем каждый раз дрожать запуская взломанную программу. Промежуточные итоги и советы. • Никогда не пишите функции типа CheckPassword : boolean • Никогда не храните, и не вычисляйте ключевых слов в программе только лишь для того, чтобы произвести банальную проверку. • Никогда явно сразу после проверок нужных вам флагов и обнаружения несоответствия, не обнаруживайте этого в коде прогрнаммы. • Не проводите проверку введённой строки посимвольно и в случае первого символа несовпадения выдавайте результат – это существенно повышает длина пароля вместо возведенияскорость подбора (количество символов количества символов в степень длины пароля) – лучше вычислять имитоприставку строки • Не используйте стандартных методов сверки, как то if EnterPassword=NeedPassword, или цикл и составление некоей контрольной суммы и проверки ее, или произведения неких операций, операндами которых служат введенный и эталонный пароли и т.д. • Старайтесь вообще избегать проверок. Используйте возможность работать с данными, как с кодом и наоборот. Например, такой прием. Содержалась таблица адресов процедур или джампов, а программа к введенному паролю добавляла константу, получая смещение в таблице переходов. И переход туда! Использование серийных номеров не годится для построения полноценной защиты от копирования. Используйте этот метод, как ловушку для невнимательного кракера. Когда вы четко будете знать, что если запускается какая-то процедурка, программа взломана. Элементарной ловушкой может быть условный переход, под ним MessageBox, сообщающий "Вы завершили регистрацию!", а затем вызов загадочной процедуры. Некоторые сразу подумают, что именно в это место программы нужно попасть, и попадаются. Только неявностью вы можете победить кракера. Давайте сомнительные подтверждения на действия пользователя. Например, регистрация завершилась, а программа выдает ошибку, предлагая позвонить Продавцу. Какой-нибудь торопыга будет спешить и подумает, что это неверный ход программы. И действительно, программа после этого закрывается. На самом же деле, этот ACCESS VIOLATION 00000:7632621 не что иное, как неявный замаскированный вывод идентификационного номера машины. Честный покупатель звонит в магазин, сообщает номер своей лицензии (или товарного чека) и говорит о чудовищной ошибке. А вы ему говорите, нажмите CTRL+ALT+S. Опа, и программа побежала дальше. Ограничения на время исполнения или количество запусков. Примеры ломки: Ставится 2010 год. Ставится программу и возвращается дата на место. Существуют "пускалки", которые удерживают заданную дату при пуске какой-нибудь программы. И возвращают её на место при выходе из программа. Используя инструменты МОНИТОР REGISTRY и МОНИТОР ФАЙЛОВ, легко определяется, где и что вы прячете. Контрмеры для этих трех шагов обнаруживаются также элементарно и теми же средствами. Итак, вы получили представление о мифе "достаточной защищенности регистрационных и шареварных программ". Не используйте эти методы по прямому назначению, т.е. для "защиты", а лишь для расстановки ловушек.