Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Видеокурс программиста и крэкера 5D 2O17
(актуальность: декабрь 2O17)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь


Взлом Asprotect 2.2 SKE, часть 4




Очень удобно, когда все крэкерские инструменты, книги и статьи в одном месте. Используйте сборник от EXELAB - вот тут.



Регистрация программ, защищенных Asprotect 2.0xx - 2.xx SKE, Asprotect 2.1 SKE, Asprotect 2.2.



Сейчас мы рассмотрим метод поиска таблицы, которую использует Asprotect для регистрации программы. Загружаем оригинальную упакованную программу, и проверяем отсутствие каких-либо BP. Устанавливаем BP на API RegOpenKeyExA:


Регистрация программ, защищенных Asprotect


Нажимаем несколько раз клавишу F9 (примерно 29 раз), пока в стеке не увидим следующее:


Регистрация программ, защищенных Asprotect


Прокрутим окно стека немного вниз, и здесь мы видим два очень важных адреса:


Регистрация программ, защищенных Asprotect


Эти два адреса - имеют для нас очень большое значение, поскольку asprotect использует их для регистрации программы.


Давайте посмотрим, откуда получаются эти адреса, для чего переходим на вкладку Call Stack [K]:


Регистрация программ, защищенных Asprotect



Щелкаем по первому вызову, и переходим на него:


Регистрация программ, защищенных Asprotect


И, теперь, нам надо найти две следующие инструкции:


Регистрация программ, защищенных Asprotect


Регистрация программ, защищенных Asprotect


Мы нашли две инструкции, которые расположены по адресам 00C45AC6 и 00C597D5. Если мы перейдем на первый адрес, и немного прокрутим вверх, то увидим:


Регистрация программ, защищенных Asprotect


На втором же адресе мы видим нормальную инструкцию, на которую устанавливаем BP:


Регистрация программ, защищенных Asprotect


Теперь ищем вторую инструкцию:


Регистрация программ, защищенных Asprotect



Регистрация программ, защищенных Asprotect


Таких инструкций очень много, а нас интересует та инструкция, которая находится возле первой найденной инструкции. Поэтому посмотрим код возле инструкции MOV BYTE PTR DS:[EAX],0E7, и немного выше мы видим:


Регистрация программ, защищенных Asprotect


На инструкции MOV BYTE PTR DS:[EAX],0E8 мы также устанавливаем BP. В этих инструкциях значение 0E8 связано с регистрацией программы, выполняемой asprotect; а значение 0E7 - с временным ограничением работы программы (trial).


Перезагружаем программу в отладчике, и несколько раз нажимаем клавишу F9 (с установленной BP на API RegOpenKeyExA), проверяя при этом появление кода по адресам 00C5976C и 00C597D5. Как только появился код в данной области памяти, устанавливаем BP на эти адреса, и нажимаем клавишу F9. Программа останавливается здесь:




Регистрация программ, защищенных Asprotect


Мы попали в процедуру регистрации программы. Нажимаем клавишу F7:


Регистрация программ, защищенных Asprotect


Если в окне информации, расположенным ниже окна кода, мы видим какое-то значение адреса, это означает, что программа должна быть зарегистрирована с помощью Asprotect. У нас же по адресу [00C6847C] записано 0000000, а это означает, что наша программа не использует регистрацию с помощью Asprotect.


Снова нажимаем F9, и программа останавливается здесь:


Регистрация программ, защищенных Asprotect


Мы пришли на проверку временного ограничения (trial). Нажимаем клавишу F7:


Регистрация программ, защищенных Asprotect


Здесь мы видим адрес процедуры, в котором продолжается работа с таблицей регистрации Asprotect. Продолжаем трассировать с F7, и приходим сюда:


Регистрация программ, защищенных Asprotect


Эту область asprotect использует для размещения нужной информации. Все, что делает asprotect, заключается в том, чтобы открыть ключ в реестре, где находится раздел SpecData, и раскриптовать его значения:


Регистрация программ, защищенных Asprotect


Значение ветви SpecData реестра asprotect размещает здесь:


Регистрация программ, защищенных Asprotect


Здесь мы видим три значения: продолжительность тестового периода (0Fh = 15 дней), количество оставшихся дней (04h = 4 дня), и количество дней, сколько мы использовали программу (0Ch = 12 дней). Также очень интересное значение записывается по адресу 00C68745; если здесь записана единица (1), то наша программа умерла:


Регистрация программ, защищенных Asprotect


Запускаем программу:


Регистрация программ, защищенных Asprotect


Закончился тестовый период (trial) данной программы!


Можно поэкспериментировать и с этим значением:


Регистрация программ, защищенных Asprotect



Регистрация программ, защищенных Asprotect


Продолжим трассирование программы до инструкции CALL EAX, которая идет на таблицу регистрации:


Регистрация программ, защищенных Asprotect


Входим в этот CALL EAX с F7, и трассируем программу до следующей инструкции:


Регистрация программ, защищенных Asprotect


Мы видим, что программа будет записывать значение 0F (длительность тестового периода) в таблицу, по адресу 00646D30. Снова трассируем программу с F7, и приходим сюда:


Регистрация программ, защищенных Asprotect


Здесь программа записывает значение 04 (число оставшихся дней) по адресу 00646D34. Давайте изменим, число 04 на значение 0F, и запустим программу:


Регистрация программ, защищенных Asprotect


Таким образом, мы имеем общие сведения о том, как создается таблица регистрации программы, чтобы можно было применить эти знания для следующих программ.


Итак, мы можем даже не распаковывать программу, а просто, найти расположение этой таблицы, и сделать Inline Patching, для изменения этих значений в коде программы. И наша программа будет иметь неснижаемый тестовый период.


Ознакомится с Inline Patching программ, защищенных Asprotect v2.x SKE, Вы можете по моей статье “Asprotect 2.1 SKE Inline Patching”, расположенной по адресу http://www.cracklab.ru/rar/dl/CRACKLAB.rU_74.rar.


Данная программа не имеет ни регистрационного ключа, ни регистрационного файла. Разработчики программы просто ввели заставку NAG, которая сообщает нам о том, что данная программа работает в DEMO-режиме, с указанием числа дней, оставшихся до завершения trial, а также не работает меню программы “Save as…”; здесь разработчики программы просто вырезали кусок кода, который связан с выполнением этой команды меню. Конечно, при желании, можно было бы дописать недостающий код, и заставить работать эту команду меню. Однако это не является целью нашего туториала, поэтому мы просто уберем заставку NAG, и сделаем небольшие косметические корректировки интерфейса данной программы.


6. Некоторые доработки интерфейса распакованной программы.


Исследуя программу, можно увидеть, что вышеуказанная заставка (NAG) появляется дважды; при запуске программы, и при щелчке по команде File → Save As… При этом NAG при запуске программы незначительно отличается от NAG при выборе команды меню Save As…:


Регистрация программ, защищенных Asprotect

Регистрация программ, защищенных Asprotect

Поскольку программа написана на Delphi, давайте применим прекрасную утилиту DeDe v3.50.04 build 1635, разработанную DaFixer/TMG, которая предназначена для анализа программ, написанных на Delphi:


Регистрация программ, защищенных Asprotect


Нажимаем кнопку Процесс, и через пару минут получаем:


Регистрация программ, защищенных Asprotect


Переходим на вкладку Процедуры:


Регистрация программ, защищенных Asprotect


Для нас сейчас интерес представляет модуль dlgTimerReminder, который имеет две кнопки, одна из которых имеет неприятную для нас надпись btnBuiNowCliсk. Адрес вызова модуля dlgTimerReminder - 005E5680. Давайте пройдем в отладчик на этот адрес, установим на этотм адресе BP, и запустим программу, нажав клавишу F9:



Регистрация программ, защищенных Asprotect


Эта подпрограмма заканчивается инструкцией RETN, поэтому, мы можем вместо инструкции PUSH EBP записать инструкцию RETN:


Регистрация программ, защищенных Asprotect


Сохраняем изменение, запускаем программу, и заставка больше не появляется. Теперь, для приведения программы в товарный вид, нам надо убрать в окне About CHM Editor надпись Demo version. Здесь мы сможем непосредственно в секции ресурсов найти и заменить слово Demo на слово Full (это слово находится по адресу 0069BD34):



Регистрация программ, защищенных Asprotect


Запускаем программу:


Регистрация программ, защищенных Asprotect


Но у нас осталась кнопка Buy Now!, которую тоже нужно убрать. Ее лучше всего убрать, введя в скрипт загрузки ресурса параметр Visible = False. Этот параметр скроет данную кнопку. Давайте посмотрим, как это нужно сделать. Для работы с ресурсами применим утилиту Restorator 2007. Запускаем Restorator 2007, и загружаем в него наш дамп:


Регистрация программ, защищенных Asprotect


Странно, утилита не видит ресурсы! Нам надо перестроить ресурсы, для чего воспользуемся утилитой Resource Binder 2.5 by @LiEn [SetiSoft (c) Tech]:



Регистрация программ, защищенных Asprotect


Загружаем опять наш дамп в Restorator 2007:


Регистрация программ, защищенных Asprotect


У нас появилось дерево ресурсов. Нам нужно найти форму, которая соответствует надписи About, для чего мы проходим в ресурс RCData, в которой компилятор Delphi хранит скрипты ресурсов:


Регистрация программ, защищенных Asprotect


Ищем кнопку по надписи на ее лицевой стороне “Buy Now”, и вводим строку Visible = False, как это показано на рисунке:


Регистрация программ, защищенных Asprotect


Сохраняем изменения, нажав клавишу F8, запускаем программу, выбираем команду меню Help → About, и видим:


Регистрация программ, защищенных Asprotect


Кнопка “Buy Now” исчезла. Но, у нас имеются еще две проблемы: команда меню File → Save as…, код которой вырезан из программы; и Help → Order Now. Поступаем аналогично, как мы скрыли кнопку “Buy Now”. Команды меню записаны в форме TFormMain, в которой мы делаем соответствующие изменения:


Регистрация программ, защищенных Asprotect

Регистрация программ, защищенных Asprotect


Сохраняем эти изменения, нажав клавишу F8, и запускаем программу. Просматривая команды меню, м видим что исчезли команды File → Save as… и Help → Order Now. Мы привели программу в нормальный товарный вид. Теперь нам надо в проводнике переименовать наш дамп на родное имя файла:


Регистрация программ, защищенных Asprotect


И, на этом можно считать нашу работу законченной.


Заключение:



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


vnekrilov


Украина




Скачать статью "Взлом Asprotect 2.2 SKE, часть 4" в авторском оформление + файлы.



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS