Исследование Multi-Edit 8.0. Программа с интересной защитойDelphi , Программа и Интерфейс , Исследование программИсследование Multi-Edit 8.0. Программа с интересной защитой
Пригодится как для начинающих так и для более продвинутых, заодно убеждаешься, что не всякую программу можно взломать только с помощью SoftICE - иногда надо думать головой. Вступление Недавно мне попался в руки такой редактор - Multi-Edit 7.0. Замечательная вещь, с почти не ограниченной функциональностью, поддержкой любого компилятора - одним словом - лучший редактор для программиста. Потом я поискал и нашел более новую версию - Multi-Edit 8.0. В ней добавлена поддержка Borland Delphi, C++ Builder, Watcom C, а также - прием/передача файлов по FTP. К сожалению, эта версия защищена - при загрузке появляетс сообщение о том, что это демо-версия, в процессе работы появляется то же сообщение, причем каждые 15 минут. Кроме того не работает поддержка FTP и действительно отсутсвует проверка английского правописания. Инструменты
Исследование Разберемся с тем, что говорилось выше. Для начала я покажу как решить проблему с сообщениями, появляющимися каждые 15 минут. Для этого стоит внимательно изучить функции Win32 API связанные со временем. Исход из того, что программа отсчитывает промежутки в 15 минут, наиболее подходящей функцией является GetTickCount. Эта функция возвращает количество тиков со времени запуска Win95. Исходя из этого, проделаем следующее - запустим SoftICE, за ним наш Multi-Edit. Закроем появившееся красивое окно с сообщением, о том, что это демо-версия. Теперь мы в редакторе. Используя bpx gettickcount я установил контрольную точку. Выйдя из SoftICE практическеи мнгновенно попадаем обратно - в функцию GetTickCount. Нажимаем F12. Теперь мы здесь:
По виду этого куска кода не трудно догадаться, что осуществляется пересчет тиков в более удобные(?) единицы. Нажмем F12 еще раз. Теперь мы здесь:
Особых пояснений требует только call sub_40F1AC. я не привожу эту процедуру из-за ее громоздкости. Достаточно лишь понять основные ее функции. В общих чертах, эта процедура проверяет, прошло-ли 15 минут со времени появления предидущего демо-окна, и если прошло, показывает то самое окно. Теперь можно подумать, как именно взламывать. Есть несколько вариантов, но что бы не копаться во внутренностях программы, можно использовать простейший - вместо инструкции call sub_40F1AC (кстати - ее длина 5 байт) использовать что-то вроде
Таким образом мы успешно избавились от занудных напоминаний со стороны авторов. Но еще есть над чем поработать! Не очень то хочется каждый раз при запуске программы видеть то самое окно, от которого мы уже успешно избавились. Моя первая мысль была - поставить что-то вроде bpx dialogboxparama, bpx dialogboxindirectparama и запустить эту штуку. Попробуете сами. Никакой реакции. Ну и ладно. Есть еще createdialogparama, createdialogindirectparama и showwindow. Теперь уже есть какой-то результат! Мы снова в SoftICE. А теперь попробуйте найти, что же вызвало к жизни этот код. Если хотите чему-то научиться - не читайте дальше, а попробуйте сами. Нашли? Теперь остается только изменить нужное условный/безусловный переход или вызов функции. Остается найти и изменить это место в файле(mew32.dll). Сделаем это и запустим все снова. В лучшем случае - у вас больше никогда не вызовется не одно окно диалога и вообще никакое другое. В худшем - получите GPF of death... А вот теперь и следует сесть и как следует подумать. Подумать очень хорошо. Какая возможность позволяет неограниченно наращивать возможности Multi-Edit? Тот кто его знает, ответят быстро - наличие внутреннего, очень мощного языка макросов. Которые кстати компилируются в некоторое подобие исполняемого кода(в Multi-Edit 8.0 eval copy компилятор отсутствует - для этого то и нужен Multi-Edit 7.0 - там он есть). Уже этого достаточно, чтобы найти решение. Если еще не нашли, то вот вам несколько подсказок - для начала посмотрите файл Src/startup.s в том каталогое где установлен Multi-Edit 7.0. Поле этого посмотрите в обоих программах такой пункт меню - macro/list all macros... Я лично изучал этот список около часа - из простого любопытства. Исходя из полученных сведений можно сделать вывод о том, что ВЕСЬ интерфейс этих программ написан именно на внутреннем языке макросов. Кроме этого есть там и такие замечательные макросы как setserial, setdosserial, serial_test. Теперь выберите Macro/run... и введите setserial. Никакого эффекта. Теперь Serial_test. То же самое. А теперь setdosserial. А вот и окошечко для регистрации пользователей, обладающих старыми версиями под Дос. Если у кого есть старый серийный номер - вводите. У кого нет - идем дальше. Я подумал, что пытаться вычислить пароль не имеет смысла. Кто не согласен - пусть попробует. Если получиться - буду очень рад об этом услышать (сами пароли кстати очень простые). Помните, я говорил посмотреть файл Src/startup.s? Если посмотрели, то какие идеи вам приходят в голову? Если у кого этого файла нет (его нет в Multi-Edit 8.0) ,то вот его содержимое:
Здесь rm обозначет run macro. Все еще нет идей? Тогда попробуйте поискать строчки mewdemo^calclag и mewdemo^nagevent в файле mac/mew.mcl в директории с MEW8. Если нашли - то попробуйте заменить их на что-то вроде sdfffwgbssbsqepa. Как вы вероятно догадолись, а вычитал в файлах помощи, скомпилированный файл может содержать несколько макросов, и поэтому в теле файла хранятся имена содержащихся макросов. А в том, что теперь будет вызываться макрос, которого якобы не существует нет ничего страшного - об этом никто никого не уведомляет. Более того - это более эффективный взлом, чем тот, что мы использовали для подавления 15-минутных напоминаний. Если избавиться от этих двух макросов с самого начала, то и напоминания не дадут о себе знать. Теперь о том, чего сделать нельзя - словарь для проверки английского правописани действительно отсутствует в демо-версии. Желающие, которым необходимо передавать и принимать файлы по FTP могут в качестве упражнения сами взломать эту часть. Тем более, что макросы для работы с FTP остались. Заключение Перед началом работы, всегда следует проанализировать и попытаться представить, как именно программа защищена. Это может сильно облегчить жизнь. Публикуемые материалы предназначены только для образовательных целей. Если Вам понравился тот или иной программный продукт и Вы планируете его использовать на протяжении длительного времени - советуем Вам его приобрести. Исследование Multi-Edit 8.0: программа с интересной защитой, позволяющей взломать интерфейс программы и обойти ограничения демо-версии. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Исследование программ ::
|
||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |