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

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


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

Исследование Active Phone Server 9.18

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

Массу крэкерских инструментов, видеоуроков и статей вы сможете найти на видеокурсе от нашего сайта. Подробнее здесь.

Автор: FEUERRADER <feuerrader@nm.ru>

Взлом Active Phone Server 9.18

Программа: Active Phone Server 9.18 Размер: 71456 байт Язык: C++ Защита: Имя/код Цель: исследование и взлом Инструменты: TRW2000 1.2? или SoftIce, Sign 0f Misery (необязательно).

Предисловие: эта статья основана на туториале Vallkor'а "Исследование Active Phone Server", где рассказывается, как взломать этот продукт. Ниже будут приведены выдержки из этой статьи.
Начнём: Запускаем программу, открываем окно "О программе", вводим имя и РН (наугад) ставим bpx GetDlgItemTextA и нажимаем кнопку "Ввести", выскакиваем в SI (или TRW2k), жмем 2 раза F12, чтобы вернуться из системной библиотеки, мы тут:

...
 016F:100171E5  CALL     `KERNEL32!FindCloseChangeNotification`
 016F:100171EB  POP      EBX
 016F:100171EC  POP      EDI
 016F:100171ED  MOV      EAX,01
 016F:100171F2  POP      ESI
 016F:100171F3  ADD      ESP,0C08
 016F:100171F9  RET
 016F:100171FA  POP      EDI
 016F:100171FB  XOR      EAX,EAX
 016F:100171FD  POP      ESI
 016F:100171FE  ADD      ESP,0C08
 ...
 

Эти инструкции нам ни о чем ни говрят. Попробуем зайти с другой стороны. Заметьте: oкно с сообщением о неверном РН выдается не сразу, а спустя несколько секунд (для понта наверное). Значит используется, скорее всего сообщение WM_TIMER. Проскролим несколько десятков строк вверх от адреса 100171E5.

...
 016F:10016FBA  CALL     `USER32!KillTimer`
 016F:10016FC0  PUSH     ESI
 016F:10016FC1  CALL     10017070            //Интересная функция
 016F:10016FC6  ADD      ESP,BYTE +04
 016F:10016FC9  TEST     EAX,EAX             //Сравним результат
 016F:10016FCB  JZ       10016FDB            //Прагаем, если 0
 016F:10016FCD  PUSH     BYTE +40
 016F:10016FCF  PUSH     DWORD 10022B50
 016F:10016FD4  PUSH     DWORD 10022B34
 016F:10016FD9  JMP      SHORT 10016FFC
 016F:10016FDB  MOV      EAX,[100260B4]
 016F:10016FE0  PUSH     BYTE +10
 016F:10016FE2  TEST     EAX,EAX
 016F:10016FE4  JZ       10016FF2
 ...

О, то что нам нужно! Ставим бряк bpx 10016FC1. Прервемся и зайдем по F8 в CALL 10017070, далее трассируем по F10. Вскоре увидим:

...
 016F:100170F2  CALL     10016D50            //процедура проверяющая
 016F:100170F7  ADD      ESP,BYTE +08        //РН с правильным, кому интересно,
 016F:100170FA  TEST     EAX,EAX             //загляните.
 016F:100170FC  JZ       NEAR 100171FA       //Прыгаем, если флаг Z=0,т.е если РН=ERR0R!
 ...

В статье Vallkor'а сказано: "Нужно изменить флаг Z на противоположный, чтобы не прыгнуть, а посмотреть, что же будет делать программка, если наш и правильный РН окажутся одинаковыми. После того, как мы это изменили, посмотрим, что же делает дальше программка:

...поскипано не нужное...
 015F:10016DAE  52                  PUSH      EDX <--в edx имя файла:
 c:\Program Files\Apserver\xxxxxxxx.key
 015F:10016DAF  FF15FCD00110        CALL      [KERNEL32!CreateFileA] <--создаём файл
 с таким именем
 ...поскипано...
 015F:10016DBD  8B1D2CD10110        MOV       EBX,[KERNEL32!WriteFile] <--заганяем
 в ebx адрес функции записи в файл
 
 Потом в файл делается две записи, которые xorятся со смещением +3".
 

Тогда все просто. Заменим условный переход

016F:100170FC JZ NEAR 100171FA

на противоположный. Прога будет думать, что РН верный и зарегится. Файл xxxxxxxx.key на каждом компе хххххххх будет разным. Введем d 100170FC и видим 0F84.....
Заменять надо 0F84 на 0F85. Итак, такой патч:

100170FD: 84 85

Патч: aon.exe запакован UPX 0.72. И как говорит сам UPX: packed by obsolete version of UPX. Cannot unpack. Сам файл нам не распаковать и не пропатчить (хотя это спорный вопрос). Тогда будем ломать его в памяти. Тут поможет Sign 0f Misery - мощная система для помощи кракеру. Можно достать тут. Создадим скрипт со следующими инструкциями:

Установиить максимальное время работы скрипта                         3,0 сек.      N/A
 Запустить программу                                                   Aon.exe       N/A
 Изменить значение байта в адресном пространстве открытого процесса    #100170FD     133
 Завершить скрипт                                                      N/A           N/A
 

Заключение: мы получили не loader для файла, а кряк! Его можно запускать всего один раз, он пропатчит прогу, а мы введем всякую ерунду в Имя и РН. Будем зарегистрированы. Теперь этот сrack нам больше не нужен.



Все права защищены ©  2003 




Обсуждение статьи: Исследование Active Phone Server 9.18 >>>


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



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


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