"Было бы большой ошибкой думать..."
В.И.Ленин
Бойтесь универсальности, но не бросайтесь в крайности. Универсальность - это поставить пароль в начале. Такая установка не требует знания тонкостей задачи, поэтому она универсальна. Т.е. может быть установлена на любой системе. Однако вас не должно останавливать и то, что такая защита может быть взломана. Посмотрите на 1С. HASP давно взломан. И тем не менее 1С не бедствует. Это я к тому, что не бросайтесь в крайности.
Что же я подразумеваю под не универсальной защитой. Это та защита, которая встроена во всю систему, а не только на момент запуска или выхода. Система, которая себя не проявляет себя сообщениями ОС или другими явными действиями, на которые можно поставить брейк. Система, которая в качестве контрдействия использует ошибку в действиях система - неправильный расчет налогов, или ошибка при умножении матриц. Надеюсь вы поняли.Такую систему писать весьма трудоемко. Поэтому я говорил, что это ОТДЕЛЬНАЯ ЗАДАЧА.
Ключевые дискеты. Люди хватаются за них из-за дешевизны. Не делайте этого НИКОГДА. Уж лучше e-key.Антиотладочные приемы. Ну почему, почему, почему? Почему каждый раз приходиться переубеждать вас в том, что если защита заключается в скрытности кода, то это не значит что она надежна. Правильная система не должна бояться, что ее можно посмотреть в отладчике или в IDA.
Инструменты. Если у вас есть возможность. Обязательно поставьте SOFTICE и IDA. Под первым попробуйте ломать свои простые программки, которые требуют ввода пароля или вычисляют серийный код. Вы получите хорошую массу тому, что такое ХАКЕР. Поставив IDA потренируйтесь следующим образом. Возьмите простую программу на VCL защищенную таймером. Т.е. перед любыми действиями вызывается задержка. Возьмите исходники VCL и вашу прогу и найдите реализацию как можно большего количества компонент, в том числе ТАЙМЕРА. И вы увидите как легко читаются программы даже на асме. Для чего это нужно? Чтобы у вас было больше стабильных данных и меньше ложных. Это выясняется только применением. Далее по инструментам. Многие из вас ненавидят С++. Не имею ничего против. Но тогда возникает трудность реализации следующей защиты. Ваши формы распределены по DLL-кам, оные зашифрованы и расшифровываются главным модулем на лету. Сделать это можно только если написать VXD, который проецируется в память при запуске главного модуля. Как же вам, делфинистам, обойти это. Очень просто. Возьмите исходники свободно распространяемой программы FILE-monitor. Там есть VXD, который реализует все HOOK-и файловой системы и он предоставляет API для обычных программ по установке таких хуков. Исходники этого VXD и нужны, чтобы разобраться с этим несложным API. Ну вот кажется и все. Обязательно пишите мне если есть вопросы, не смотря на то, что это так "трудно" делать. Если у меня есть время и возможность я обязательно отвечу. Если у меня появиться какая-нибудь интересная задачка, которая вам будет также интересна, то обязательно напишу об этом. Мне нравиться делиться опытом. Конечно, мне жаль, что в некоторых вещах, о которых мне хотелось бы рассказать мы не совпадаем во мнении.На этом считаю последний номер АКМ законченным.
13 февраля 2001г.
Дмитрий Логинов