Реферат по предмету "Программирование"


Полезные советы по криптографии

Защита программ от копирования.Алексей! С удовольствием читаю ваши странички о криптографии и не смогудержаться чтобы не рассказать еще ободном достаточно эффективном способепрограмм от копирования . Сам я пишу программы на Fox и использую этот методсущность которого привожу ниже. Как обычно выглядит запароленная программа? Ее воруют, запускают, и онагордо так спрашивает Пароль Ей отвечают НА ГОРШКЕ СИДИТ КОРОЛЬ joke или что-то в этом роде

Программа говорить Password неверен,работать не буду. Зовут хакера. Говорят, врага видишь. Вижу отвечает. Давай,борись. Хакер достает из кобуры дебагер 38 калибра, и справляется с поставленойзадачей. У меня точно также, только программа после ухода хакера начинает глючить сострашной силой. То процент начисления не тот поставит, то директора поставитзавхозом, а секретарше зарплату начислит

повыше директорской и т.д. Причем всеизредка и случайно. Зовут опять хакера, говорят ему - ты программу плоховскрыл. Хакер смотрит еще раз, нет говорит, все нормально. А она глючит у насговорят ему. А что он им может ответить, прямого образа врага перед ним нет, неможет же он гнать всю программу под отдадкой, он же не программист, он хакер.

Если я имея исходники отлаживал прогу полгода, то ему в бинарных кодах сколькопотребуется? А суть метода как ты догадывешся очень проста В одной из менюшек программы,с виду такой-же как и все остальные вводишь пароль, и если он неверен топользуясь генератором случайных чисел выполняешь неверные команды обычно яиспользую свои глюки из ранних версий программ . Работает такая штука у менянесколько лет уже, и достаточно эффективно.

То есть сущность идеи заключается втом чтобы не было видно защищена программа или нет. Мне кажется что такимспособом можно криптовать даже тексты, но как, пока до конца не додумал,хотя идеи есть.С уважением, Александр Козлов, программер.Регистрация основанная на серийных ключах.Уважаемый Алексей, посмотрел Вашу страничку о защите программ довольнонеплохо, но у меня есть некоторые замечания. Вы рассматриваете два метода серийныеключи и регистратор.

Ваше утверждение, что второйметод намного более надежен, чем первый, несколько спорно.Дело в том, что при хорошем знании ассемблера очень просто его обойти когдапользователь вводит свое имя и регистрационный код, программа генерирует правильный код и сравнивает его с тем, который он ввел, поэтому перехватить этот код просто считать его из памяти не составлетособого труда. В большинстве случаев достаточно просто поставить breakpoint нафункцию lstrcmp и все дела

Упаковка программы,анти-дебаггерные и анти-дизассемблерные примочки помогают слабо.Очень рекомендую заглянуть на http fravia.org там много чего по этому поводу написано.А вот первый метод может быть реализован достаточно неплохо. Хранить правильные ключи в программе совсем не обязательно можноподчинить их некоторым правилам что-то подобное делает Microsoftсо своими CD-keys, но у них все слишком просто.

Алгоритм проверки может бытьдлинным и запутанным, так что его дизассемблирование и разборка ,что же он делает причинит немало головной боли. Именно первый метод я иприменил для защиты своей программы Advanced Disk Catalog старые версии , но и он был сломан хотя, как мне написал ломавшийего хакер, подборка всего двух правильных ключей отняла у него много времени .Тогда мне в голову пришла идея а что, если ключи хранить внутри программы, нозашифрованными?

Я сгенерил некоторое количество ключей абсолютнослучайным образом , зашифровал их по отдельности 128-битным ключом поалгоритму RSA и прошил в программу в виде ресурса. Когда пользователь вводитключ, он шифруется по тому же алгоритму и сравнивается с правильными. Так каксистема с открытым ключом не позволяет произвести обратное преобразование,базируясь только на открытом ключе а закрытого нет даже у меня -расшифровывать-то не надо , то подобрать ключи невозможно

даже теоретически.Есть, впрочем, еще одна проблема хакер или крэкер , еслиугодно может заменить je на jne или что-то в этом роде там, гдепроисходит последняя проверка, и функция IsValidKey будет всегда возвращать TRUE. Останется лишь написать маленький patch Чтобызащититься и от этого, я вычисляю CRC своего exe-файла и сравниваю его справильный, прошитым тоже внутри программы естественно, при вычислении этачасть файла где лежит правильный

CRC исключается а прошивается он после компиляции . Кстати, это еще и защита отвирусов. Вообще-то, проверку CRC тоже можно локализовать и запатчить , но это уже немного сложнее, особенно если программавызывает функции чтения записи и для других целей. Кроме того, не стоит вслучае несовпадения CRC сразу об этом сообщать, иниче можно будет поставитьhardware breakpoint и найти место, где он вычисляется.

И последнее. Если хочетсязащитить программы совсем уж круто , томожно несколько функций всвоей программе те, которые должны вызываться только в зарегистрированнойверсии , зашифровать по тому же алгоритму с открытым ключом. При этом,естественно, часть серийного номера отсылаемого зарегистрировавшимся надосделать статическим , т.е. неизменным для всех пользователей. Наоснове этой части после регистрации генерируется полный закрытый ключ, которыйдалее используется

для расшифровки указанных функций. Таким образом, даже еслибудет написан patch, позволяющий зарегистрироваться с любым произвольным кодом, расшифровка пройдет неправильно, и вместо нормальногокода будет выполняться мусор .Этот способ я применил в другой своей программе Advanced ZIPPassword Recovery , и ее пока не вскрыли. Всего наилучшего, Vladimir KatalovКак написать свой собственный регистратор.

Существует 2 типа написаниярегистратора программы Первый - это так называемые серийные ключи. Они встраиваются впрограмму и совершенно не зависят ни от введенного имени владельца, ни отвведенной организации. Его не желательно использовать по Интернету, т.к. авторуShareware программы необходимо поместить несколько серийных номеров, которыемогут быть просмотрены в exe-шнике и затем легко распостроняться через все тотже Интернет.Второй - это создание своего алгоритма регистрации,зависящего от введенного

имени владельца и организации . Вот на нем мыподробно и остановимся. Такой тип регистрации применяется во многих Sharewareпрограммах, например WinZIP, CutFTP и т.д. Для его написания необходимоиспользовать один и тот же алгоритм дважды вначале в самой программе дляпроверки правильности введенного кода, и в программе генерирования ключей,посредством которой Вы, получив предварительно имя регистрируемого, создаетерегистрационный ключ.

Исходник написан на Delphi 2.0В поле NameEd типа TEditвводится имя зависит от регистров букв , а в поле PasswEd тоже типа TEditпоявляется регистрационный ключ. Изменив глобальную константу RegCode можнополучить совсем другой ключ для одного и того же вводимого имени. Смысл этогоалгоритма в том, что вначале с первым элементом Reg который приравниваетсяRegCod у делается побитовая операция

XOR со всеми элементами стринга имени иXOR с длинной этого стринга, затем в цикле XORится текущий элемент спредыдущим, а потом весь полученный массив переводится в 16-разрядную системусчисления и записывается в результирующий стринг PasswEd.Text. const RegCode array 1 5 of integer 3В, 1E, FB, A1, 92 Введите сюда своисобственные значения procedure TMainForm.NameEdChange Sender TObject var Reg array 1 5 of integer z integer

Перевод в шестнадцатиричную систему procedure HEXCase HexNm integer begin case HexNm of 0 9 PasswEd.Text PasswEd.Text IntToStr HexNm 10 PasswEd.Text PasswEd.Text a 11 PasswEd.Text PasswEd.Text b 12 PasswEd.Text PasswEd.Text c 13 PasswEd.Text PasswEd.Text d 14 PasswEd.

Text PasswEd.Text e 15 PasswEd.Text PasswEd.Text f end end begin Main Приравниваем RegCode Reg For z 1 to 5 do Reg z RegCode z XORим первый элемент Reg 1 Reg 1 XOR Length NameEd.Text XORим его опять со всем Nam ом For z 1 to Length NameEd.Text do XORим его снова с длиной Nam a

Reg 1 Reg 1 XOR Ord NameEd.Text z XORим предыдущий с текущим For z 2 to 5 do Reg z Reg z XOR Reg z-1 PasswEd.Clear Переводим Reg в HEX стринг For z 1 to 5 do begin HexCase Reg z div 16 HexCase Reg z mod 16 end end main Если Вы хотите получать за свою Shareware программу деньги, то можете воспользоваться услугами предлагаемыми

российской компанией StrongSoftware



Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Санитарное просвещение в деятельности лечебно-профилактических учреждений
Реферат Globalization Essay Research Paper We live in
Реферат Учет выбытия основных средств 3
Реферат Надзор
Реферат Fight Essay Research Paper At a huge
Реферат Оправдано ли подражание раскрученным торговым маркам?
Реферат Управление предэкзаменационным состоянием студента средствами физической кльтуры
Реферат Аннотация содержания дисциплины «Прикладная метрология»
Реферат Северная война 3
Реферат Процесс развития личности
Реферат Ла-Ферьер крепость
Реферат Организация деятельности социального работника в психиатрической больнице
Реферат Выполнение монотипии и применение её в графическом дизайне
Реферат Регулирование международной экономики
Реферат Аннотация программы дисциплины «Документирование управленческой деятельности» Цель и задачи дисциплины