Защита программ перекрытием кода
|
Хакеры взломали 3-х минутную демо-версию Виагры.
Теперь она trial-версия на 70 дней.
|
Не секрет, что совершенной защиты не существует, как некоторые авторы и фирмы
не пыжатся , но они не правы. Хорошая защита должна обеспечить такой уровень,
чтобы на вскрытие защиты нужно было затратить усилия сравнимые с самостоятельным
написанием программы. Разумеется она должна быть многоуровневой и
перекрывающейся (т.е уровни должны работать независимо). Не забывайте, что
хорошие взломщики неплохо знают ассемблер и высокоуровневе ухищрения от них не
спасают. Следовательно защищаться нужно тоже используя ассемблер.Не считайте,
что это уже не модно или тяжело. Хороший программист не брезгует ассемблером и
высшей математикой.
Мой любимый метод для наколки - это перекрывающийся код. Он может показаться
немного сложным для большинства из нас, но зная нескольо HEX-значений инструкций
процессора,вы тоже сможете сделать небольшой по размеру перекрывающийся код.
Перекрывающийся код можно сделать сколь угодно многоуровневым, просто здесь я
покажу только в каком направлении надо "копать".
temp_string :='Den is Com';
asm
mov ax,$05EB
@as: jmp @as-2
end;
ShowMessage('Сообщение');
|
На первый взгляд это может сконфузить вас, но все это очень просто. Первая
инструкция заносит "левое" значение в AX. Вторая делает переход на значение
операнда команды MOV AX. '05EB' переводится как 'jmp$+5' (помните, что слова
хранятся задом наперед) Этот переход перепрыгивает первый JMP и продолжает
дальше по коду.Вероятно, не будет достаточно для защиты, но продемонстрирует
технику. Взгляните на это как пример.
присваивание temp_string :='Den is Com' существенной роли не играет :), но
может использоваться при отладке программы - хорошо присматривается при
использовании дизассемблера. Скорее всего ваши первые шаги будут приводить к
частому зависанию компьютера, но не отчаивайтесь - это того стоит. Попробуйте
разработать свой способ сравнения строк (чаше всего ловятся именно эти
инструкции), попробуйте замаскировать инструкции зависания компьютера и т.д.
|