Часть полного текста документа:Защита программ от копирования. Алексей! С удовольствием читаю ваши странички о криптографии и не смог удержаться чтобы не рассказать еще ободном достаточно эффективном способе программ от копирования . Сам я пишу программы на Fox и использую этот метод сущность которого привожу ниже. Как обычно выглядит запароленная программа? Ее воруют, запускают, и она гордо так спрашивает: Пароль?!!! (Ей отвечают: НА ГОРШКЕ СИДИТ КОРОЛЬ (joke) или что-то в этом роде Программа говорить: Password неверен, работать не буду. Зовут хакера. Говорят, врага видишь. Вижу отвечает. Давай, борись. Хакер достает из кобуры дебагер 38 калибра, и справляется с поставленой задачей. У меня точно также, только программа после ухода хакера начинает глючить со страшной силой. То процент начисления не тот поставит, то директора поставит завхозом, а секретарше зарплату начислит повыше директорской и т.д. Причем все изредка и случайно. Зовут опять хакера, говорят ему - ты программу плохо вскрыл. Хакер смотрит еще раз, нет говорит, все нормально. А она глючит у нас говорят ему. А что он им может ответить, прямого образа врага перед ним нет, не может же он гнать всю программу под отдадкой, он же не программист, он хакер. Если я имея исходники отлаживал прогу полгода, то ему в бинарных кодах сколько потребуется? А суть метода как ты догадывешся очень проста: В одной из менюшек программы, с виду такой-же как и все остальные вводишь пароль, и если он неверен то пользуясь генератором случайных чисел выполняешь неверные команды(обычно я использую свои глюки из ранних версий программ). Работает такая штука у меня несколько лет уже, и достаточно эффективно. То есть сущность идеи заключается в том чтобы не было видно защищена программа или нет. Мне кажется что таким способом можно криптовать даже тексты, но как, пока до конца не додумал, хотя идеи есть. С уважением, Александр Козлов, программер. Регистрация основанная на серийных ключах. Уважаемый Алексей, посмотрел Вашу страничку о защите программ -- довольно неплохо, но у меня есть некоторые замечания. Вы рассматриваете два метода -- серийные ключи и регистратор. Ваше утверждение, что второй метод намного более надежен, чем первый, несколько спорно. Дело в том, что при хорошем знании ассемблера очень просто его обойти: когда пользователь вводит свое имя и регистрационный код, программа генерирует "правильный" код и сравнивает его с тем, который он ввел, поэтому "перехватить" этот код (просто считать его из памяти) не составлет особого труда. В большинстве случаев достаточно просто поставить breakpoint на функцию lstrcmp -- и все дела... Упаковка программы, анти-дебаггерные и анти-дизассемблерные "примочки" помогают слабо. Очень рекомендую заглянуть на http://fravia.org -- там много чего по этому поводу написано. А вот первый метод может быть реализован достаточно неплохо. Хранить "правильные" ключи в программе совсем не обязательно -- можно подчинить их некоторым правилам; что-то подобное делает Microsoft со своими CD-keys, но у них все слишком просто. Алгоритм проверки может быть длинным и запутанным, так что его дизассемблирование (и "разборка", что же он делает) причинит немало головной боли. Именно первый метод я и применил для защиты своей программы (Advanced Disk Catalog -- старые версии), но и он был "сломан" (хотя, как мне написал ломавший его хакер, подборка всего двух правильных ключей отняла у него много времени). ............ |