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

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


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

Исследование CPUIdle 6.0

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

Массу крэкерских инструментов, видеоуроков и статей вы сможете найти на видеокурсе от нашего сайта. Подробнее здесь.
Description : [WIN] CPUIdle 6.0 (for Win9x)
Crack subject : 30 days trial, CRC check
Crack made by : Runtime_err0r
Crack made at : 21-07-2003
Comments : http://www.cpuidle.de/
Protection : (X)Beginner ( )Intermediate ( )Advanced ( )Expert
Time for hack : 00:15
Type of hack : JMP Correction
Used packer : UPX
Used unpacker : UPX
File size : 303620 bytes
Src language : Borland Delphi
Price : 20 Euro
Used tools : UPX 1.24, HIEW 6.83, TRW2000
Under Music : Radio ULTRA (100.5 FM)

Внимание !!!
Данная статья носит образовательный характер и предназначена для разработчиков программных защит.
Автор не несёт никакой ответственности за возможное использование материалов данной статьи в противозаконных целях.

В этой статье я собираюсь рассмотреть программу CPUIdle 6.0 (под Windows 9x). Эта программа идеально подхоит для новичков, желающих изучить Reverse Engeneering, потому что защита в ней достаточно примитивная: она запакованна UPX'ом, а для снятия защиты надо исправить всего 2 jump'а, причём для этого даже не нужен дизассемблер - достаточно только дебаггера. Итак, let's go ...
Эта прога, как я уже сказал, запакованна UPX'ом, причём немодифицированным, так что распаковывается она самим же UPX'ом с опцией -d. После распаковки мы получаем файл размером 903172 байта, который не работает - показывает Splash screen и завершает работу. Ну ничего - суём прогу в TRW и начинаем тупо трассировать, пока не дойдём до такого момента:
    0167:00490BF9  MOV      EDX,[0048BE54]
    0167:00490BFF  CALL     00474634          << Здесь показывается splash screen
    0167:00490C04  MOV      EAX,[00492580]
    0167:00490C09  MOV      EAX,[EAX]
    0167:00490C0B  MOV      DWORD [EAX+74],3039
    0167:00490C12  CALL     00478464          << подсчёт CRC
    0167:00490C17  MOV      EAX,[00492300]
    0167:00490C1C  MOV      EAX,[EAX]
    0167:00490C1E  XOR      EAX,1FD2B73C      << сравнение с нормальной
    0167:00490C23  JNZ      00490C3C          << если не равно - до свидания
    0167:00490C25  MOV      EAX,[00492580]
 
нетрудно заметить, что пока прога не распакована, этот jump не выполняется, поэтому надо его просто заNOPить.
Теперь всё работает замечательно, но вот 30-дневный триал остался - если перевести часы на месяц вперёд то вместо splash screen'а мы увидим MessageBox "This shareware version of CpuIdle has expired. If you want to continue using CpuIdle, you must register."
Теперь ставим бряку на GetLocalTime и запускаем наш распакованный EXE'шник (надеюсь, вы уже успели заNOPить там проверку CRC с помощью HEX-editor'a). После срабатывания бряки жмём F12, F12 и F10 и оказываемся тут:
    0167:0048D809  CALL     0040A734
    0167:0048D80E  FLD      TWORD [EBP-20]    << мы здесь
    0167:0048D811  FSUBRP   ST1
    0167:0048D813  CALL     00402B90
    0167:0048D818  MOV      [EBP-0C],EAX
    0167:0048D81B  CALL     0040A734
    0167:0048D820  FCOMP    DWORD [0048D968]
    0167:0048D826  FNSTSW   AX
    0167:0048D828  SAHF
    0167:0048D829  JNC      0048D831
    0167:0048D82B  CMP      DWORD [EBP-0C],BYTE +00  << сколько дней осталось до окончания триала
    0167:0048D82F  JNL      0048D874
    0167:0048D831  PUSH     BYTE +10
 
Как нетрудно заметить, jump по адресу 48D82F выполняется, если триал ещё не закончился, так что надо его заменить на безусловный. Теперь прога полностью излечена от триальности !
Ещё незарегистрированная версия не позволяет в настройках убрать галочку напротив пункта "Заставка при запуске", но это уж совсем просто, надо просто немного подправить реестр:
    REGEDIT4
 
    [HKEY_CURRENT_USER\Software\CpuIdle]
    "SplashScreen"=dword:00000000
 
Теперь пару слов напоследок: во-первых распаковывать прогу, запакованную UPX'ом, чтобы пропатчить - это, конечно, изврат, гораздо лучше сделать inline-patch. Но на эту тему написанно уже дофига статей, так что я решил не повторяться и не включил этот материал в данную статью. Если кто-нибудь сильно попросит, то я посвящу этой теме вторую часть статьи, но я сомневаюсь, что это кому-нибудь нужно.
Во-вторых всё, что описанно в этой статье имеет чисто образовательное значение, потому что если вы собираетесь пользоваться незарегистрированной программой больше 30 дней, то перед установкой программы переведите часы лет на 10 вперёд, а потом верните назад и пользуйтесь на здоровье.

Обсуждение статьи: Исследование CPUIdle 6.0 >>>


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



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


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