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

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


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

Взлом alcohol 120%

Обсудить статью на форуме

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

Автор: dragon <dtdcs@mail.ru>

        Как известно, сейчас процветают защиты от копирования дисков. Пожалуй, самая известная из них - StarForce. И в самом деле, используется она около полутора лет, а её ещё никто не взломал(по крайней мере нет универсального взломщика). Нет, здесь я не буду рассказывать о взломе этой защиты, а расскажу всего лишь о программе, которая позволяет копировать такие извращённые диски. Речь идёт об Alcohol 120%(98 градусов ещё встречал, но чтоб 120...), версия его - 1.4.3 build 518, последния на данный момент. Только полностью скопировать диск не получится, надо создать образ, потом сунуть его на болванку и с неё же виртуалить, не забыв включить в опциях эмуляцию RMPS и выставить тип данных при создании образа, сами догадайтесь какой.

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

          SoftIce(ну куда уж без него?!)
          IDA Pro
          UPX(говорю вам, пригодится)
          PE Editor
          пара Filemon и Regmon, ну и regedit впридачу
          WinHex или аналог
          И достаточно мощный комп(можно и слабый, если много терпения)

        Прежде, чем рассказывать о взломе, хочу предупредить - если есть деньги, то лучше купите программу(не про всякую прогу я так могу сказать, но эта стоит того). К сожалению бабок у меня не оказалось... Ну да ладно, начнём. Начинать надо естесственно с PE Editor'а, а именно с утилиты, которая показывает нам компилятор и упаковщик, которые использовались для создания и упаковки файла. Ну компилятор, понятное дело, оказался unknown, а вот упаковщик - UPX(!!!) Значит никаких дампов и восстановлений импорта, просто upx -d alcohol.exe, и всё готово. Теперь можно всё это дело сунуть в IDA, и в PE Editor для определения компилятора. И не пытайтесь использовать WDasm(я пробовал продизасмить им, но он зависал, даже новая десятая версия. Видимо WDasm'му строго противопоказан алкоголь, тем более такой крепкий, аж 120 градусов!) Компилятор оказался C++ Builder, значит это знакомые нам библиотека VCL, и тонны вложенных процедур. Никакому ASProtect'у и не снилось то, что делают борландовские компиляторы... Если бы прогу написали на асме, то бы она наверное в 200-300kb влезла вместо 4.2Mb, но что сделано, то сделано. Теперь если вам нужно, чтобы IDA быстрее выдал листинг, выставьте ему приоритет реального времени, но система во время анализа кода будет недоступна. Например у меня Pentium III 825, 384Mb ram - анализ закончился через 20 минут, поэтому я и писал, что комп нужен неслабый. Теперь, когда листинг готов, можно и поизучать механизм регистрации программы. Оказалось, что из самой проги нет никакой возможности зарегиться, но в каком-то readme или help файле я прочитал, что нужен регистрационный код. Значит он должен хранится где-то в файле или в реестре, и где конкретно, не узнаешь. Придёться действовать по другому. Вот зачем например в зарегистрированной версии окно about? Вот его и будем ловить. Ловить окна надо так: bpx CreateWindowExA. Но эта функция вызывается много раз, и не узнаешь, где нужный нам вызов. Придётся ловить по ShowWindow. Вот эта функция вызывается один раз, и путаница исключена - это тот самый about диалог. Но есть одно "но", в библиотеке VCL для создания окна используется чуть ли не сотня вложенных call'ов, поэтому применим другой способ. ed esp и копаемся в стеке, ищем адреса, которые похожи на начало программы. Первые три адреса попались такие - 423357, 4041B0 и 402687. По адресу 423357 оказались одни 0FFh, значит остались два адреса. Для исследования нужно найти такой адрес, чтобы инструкции по нему выполнялись в проге один раз и по трассированию F10 в айсе появлялся наш about, после нажатия на OK мы должны опять попасть в айс, т.е. до появления главного окна. Всему этому соответствует адрес 402682(call на 5 раньше). Только прямые бряки, т.е. bpx, у меня почему-то не срабатывали, я ставил так: bpm 402682 x. Теперь настала очередь IDA. Смотрим, можно ли обойти вызов about'а без плохих последствий(без запуска самой проги или её некорректной работы). После долгого просмотра видно, что ни один условный переход не обходит этот вызов. Значит обход существует в другом месте программы - выше или ниже. Смотрим выше, т.е. находим адреса вышестоящих процедур - 59F918 и 401D98. В процедуре по адресу 59F918 адрес следующей процедуры определяется значением регистра edx. Но не надо спешить искать все изменения edx, надо просто получше проанализировать. После выполнения call'а по адресу 59F949, мы окажемся на 4025D4, процедура очень похожа на инициализацию главного окна. Почему? Да потому, что если её не вызывать(подменить eip в айсе), то главное окно просто не появится. Если в зарегенной версии другое значение edx(на входе в 59F918), то значит процедура инициализации будет другая. Можно поискать возможную процедуру: возьмём какую-нибудь ссылку на строку, например "TrayIcon". И поищем её в листинге(опять ждать...) Видим, что найдено ещё несколько процедур, но они меньше той, которую мы рассматриваем. На самом деле это процедуры инициализации окон опций и мастера создания образа. Можно повторить всё это и с другими строками, но скажу сразу, что ничего не найдёте. Значит обход в процедуре 59F918 отпадает. Ищем обход в выше стоящей процедуре и находим его по адресу 401DEF. Но только вместе с about'ом мы обходим и главное окно. Значит придётся копаться ниже. Входим по call'у на 402682 и попадаем на адрес 422B00, и ищем там процедуру создания about'а. Как же её искать? Да просто F10 зажать и ждать его появления, потом закрыть его и будет адрес, например 423351. теперь ищем его обход. И сразу в глаза бросаются инструкции:

 _text:00422B5E call sub_0_401A74
 _text:00422B63 test al, al
 _text:00422B65 jnz loc_0_4233EC

        Интересно, заглянем теперь в процедуру 401A74...

 _text:00401A74 mov byte_0_661166, 0
 _text:00401A7B xor eax, eax
 _text:00401A7D retn

        Это ещё что за прикол??? Процедура, которая всегда возвращает 0? Посмотрим, что будет, если её подправить. Ставим бряк на 401A7D и вручную исправляем значения в памяти и в регистре eax. И наконец-то! Этого, уже задолбавшего диалога больше не появляется! Теперь осталось пропатчить эту процедуру и доделать всякие там мелочи, типа имени пользователя и всего такого. Берём любой компилятор или справочник по опкодам и узнаём hex значения следующего кода:

          xor eax, eax
          inc eax
          mov [00661166h], al
          nop
          ret

        Именно такой, код, потому что он тоже занимает 9 байт. Его опкоды следующие, если сами не нашли: 33 C0 40 A2 66 11 66 00 90. Теперь узнаёи место в файле, где надо патчить. Например, в PE Editor'е берём raw offset секции text и прибавляем к нему 401A74-RVA секции text, т.е. A74. Получаем адрес 1074, по которому в WinHex'е или где-нибудь ещё заменяем эти противные байты на нормальные.

        Но это ещё не всё. Теперь надо подписать имя пользователя и фирму. Запускаем Regmon и Filemon, и ищем в них что-нибудь подозрительное при открытии старого знакомого about диалога. В Regmon'е видим, что прога пытается открыть несуществующий раздел HKEY_CURRENT_USER\SOFTWARE\Alcohol soft\Alcohol 120%\Info. Создадим его и запустим Regmon вместе с этим ABOUT'ом ещё раз. Теперь конкретно видим, что алкоголь читает параметры UserName, Company и SerialNo в разделе info. Пишем там что хотим, хотя серийный номер всё-равно будет отображаться как 0000, хотя зачем он теперь нужен? Ну и последние штрихи - ищем в проге вхождения trial и затираем полностью строки или вставляем там что-нибудь своё. И наконец последнее, что можно сделать, так это поиск по реестру всех вхождений "Alcohol 120% (Trial Version)" и замена на нормальную строку(это для меню "установка и удаление программ"). Теперь всё!!!!!

        И напоследок хочу ещё раз повторить, что если средства позволяют, программу лучше купить. Она того стоит!

 автор: dragon, который естесственно не несёт ответственности за противозаконное использование данных материалов.
 мылить сюда: dtdcs@mail.ru

        18 июня 2003 г.



Обсуждение статьи: Взлом alcohol 120% >>>


Комментарии к статье: Взлом alcohol 120%

Шамиль 23.04.2005 14:40:58
Я немогуеё зарегистрировать
---
Rick 12.06.2005 11:17:13
Бааальшое спасибо!!!! Очень понравилось
---

Материалы находятся на сайте https://exelab.ru



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


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