Защита программ перекрытием кода Автор: Den is Com Не секрет, что совершенной защиты не существует, как некоторые авторы и фирмы не пыжатся, но они не правы. Хорошая защита должна обеспечить такой уровень, чтобы на вскрытие защиты нужно было затратить усилия сравнимые с самостоятельным написанием программы. Разумеется она должна быть многоуровневой и перекрывающейся (т.е уровни должны работать независимо). Не забывайте, что хорошие взломщики неплохо знают ассемблер и высокоуровневе ухищрения от них не спасают. Следовательно защищаться нужно тоже используя ассемблер. Не считайте, что это уже не модно или тяжело. Хороший программист не брезгует ассемблером и высшей математикой. Мой любимый метод для наколки - это перекрывающийся код. Он может показаться немного сложным для большинства из нас, но зная нескольо 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' существенной роли не играет :), но может использоваться при отладке программы - хорошо присматривается при использовании дизассемблера. Скорее всего ваши первые шаги будут приводить к частому зависанию компьютера, но не отчаивайтесь - это того стоит. Попробуйте разработать свой способ сравнения строк (чаше всего ловятся именно эти инструкции), попробуйте замаскировать инструкции зависания компьютера и т.д.