Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Blowfish Advanced простая защита - простой взлом
Автор: Zet

Едут бизнecмeн и пpoгpaммиcт в такси. Bдpyг мaшинa лoмaeтcя. Бизнecмeн xвaтaeт тeлeфoн, нaчинaeт звoнить, pвёт вoлcы, кpичит, чтo вcё пpoпaлo... Boдилa гoвopит:
- Лaднo, нe opи сейчас пoчиним...
И идёт чинить. Пpoгpaммиcт:
- Cлyшaйтe, мyжики, мoжeт выйдeм-вoйдём, oнa и пoeдeт?

В этой статье дан общий подход к исследованию целого ряда программ, примитивно защищенных, но, почему-то создающий трудность для начинающих. Относится это к таким программам, как WinZip, WinRar и т.д. (Комментарий Bad_guy: насчёт WinRAR старше 2.5 не соглашусь)

Введение

Довольно давно я достал программу Blowfish Advanced 97. Мне она кажется достаточно интересной, т.к. предлагает пять различных алгоритмов шифрования, возожность подключения модулей, реализующих другие методы шифрования, а также возможность удалени конфиденциальной информации с винчестера различными методами, обеспечивающими невозможность восстановления.

Необходимые инструменты

  • SoftICE 3.23 for Win95
  • Любой шестнадцатиричный редактор файлов
  • WDasm 8.x

Статья

Перед тем как начать исследовать программу, следует поставить себе цель. Надо знать, на что обратить внимание при исследовании, попытаться представить возможный в данном случае метод защиты. Лично я, перед тем как начать взлом программы, всегда читаю файлы типа REGISTER.TXT, или соответствующий раздел хэлпа. Там можно узнать много интересного - сколько программа стоит (цена позволяет оценить качество защиты - хорошая защита бывает в основном у очень дорогих программ, и у программ дешевых, но написанных умельцами, которые о защите кое-что знают). Далее, можно узнать срок, в течении которого программа будет работать нормально, и что произойдет, если срок истечет. Можно найти там и последовательность действий, которые необходимо совершить для активизации процедуры регистрации(если это не очевидно). Вообще, перед тем как взламывать, надо собрать побольше информации об обьекте взлома. В большинстве случаев эта информация может оказаться полезной на начальном этапе взлома.

Теперь о нашей программе. В хэлпе к ней сказано, что при оплате вы получите ключ, "отпирающий" вашу программу, позволяя вводить пароли, длинной более пяти символов. Ключ. Наверное, не очень то просто вычислить ключ. А может и просто. Не знаю. Как известно, я пишу статьи для кракеров. Так что достаточно будет найти нужное место в программе и поменять в ней пару бит. Этого достаточно.

Теперь главное - найти место в программе, где надо менять. Если кто хочет, может попробовать взломат эту программу с помощью SoftICE. Я решил, что этот подход безперспективный, и дизассемблировал файл BFA97.EXE. Прежде чем читать дальше, сделайте тоже самое. Пока прочитаете - может и получите листинг.

Теперь общие рекомендации. Исходя из писем, ко мне поступающих, и того что пишется в форуме, мне стало ясно, что некоторые новички имеют неправилный подход к некоторым простым вещам. Обычна ошибка - нашли код который следует за процедурой проверки правильности серийного номера (или еще чего то) , поменяли условный перход на безусловный. К превеликой радости пролучили окно, сообщающее о успешно регистрации. А программа по прежнему работает как демо-версия. Так вот. Не надо думать, что программа единожды проверяет корректность регистрации. Правда, есть такие программы, но они в меньшинстве, и по кракерской классификации возглавляют список "Тупейшая защита месяца". Те программы, о которых расказываю, стоят в конце этого списка. Потому, что они проверяют корректность регистрации несколько раз в ходе работы. Исходя из этого есть две возможности : первая - найти и заменить ВСЕ проверки, вторая - найти процедуры проверки, и сделать так, чтобы она всегда сообщала о наших неоспоримых правах на эту программу. Те, кто решили, что первый метод лучше, должны забросить мечты стать кракером и заняться чем нибудь другим, например разработкой защиты для программ. Возможность номер два мы немедленно реализуем, получив в свои руки листинг программы.

Если этот ценный артефакт уже у вас, то найдите в нем код, ссылающийся на строку типа 'Registered Release' или, что равнозначно, 'Unregistered Evaluation copy'. За несколько байтов до этого места, стоит пресловутое


call 12345678
test al,al
jz UNREGISTERED!!!! 

Вот этот самый call мы и будем анализировать! Для этого запомните адрес(в данном случае 12345678), и загрузив программу, в SoftICE поставьте Bpx на этот адрес. При некоторых ваших действиях, будет всплывать SoftICE. Посмотрите! Вы в процедуре проверки (правда, неизвестно чего, но это не важно)! Теперь ваша задача - найти код, который некоторым образом обнуляет/не обнуляет регистр AL. Хорошо, если вы знаете ассемблер. Очень, очень хорошо... Для тех, кто не знает, скажу сразу - ищите (в данном случае, в других программах может быть по другому) команду SETZ AL (ее код 0F 94 C0). Эта команда обнуляет AL при установленном флаге ZF. Разбирайтесь сами в том, что происходит в процедуре. Скажу, что я решил задачу, поменяв 0F 94 C0 на 0F 95 C0. Итого - изменили 1 бит в программе.

Обратите внимание на занятную метаморфозу. До взлома (по крайней мере у меня) программа сообщала, что она Registered Release и не давала создавать паролей и ключей длиннее пяти байт. После взлома обнаружил, что лишился моего Registered Release и стал обладателем Unregistered Evaluation copy, но с возможностью шифровать с ключом в 16 Кбит и длиннющими паролями. Странно? Может не все так просто, как кажется, и автор программы, не так плох в защите, как кажется? Это еще предстоит выяснить. Вам...

Примечание

Чем проще взлом, тем лучше. Для связи с автором пишите ze_tty@yahoo.com. Если вы с помощью этой статьи не смогли сделать для себя работающую версию, то пишите, посмотрю, что можно сделать еще.

Легально ли это?

Я даже не хочу напоминать (вы должны знать и помнить это сами), что данный материал публикуется только в образовательных целях. Если вы хотите использовать этот програмный продукт, то вы обязаны купить его. Если же вы не желаете покупать его, то для этого вам достаточно поискать серверах распространяющих пиратские программы. Для этого вовсе не надо понимать механизм работы программы и схему ее защиты. Ответсвенность за ваши действия несете только вы сами.

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay