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

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


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

Взлом программы Календарь v4.3

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

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

Автор: -= ALEX =- <alex-xakep@mail.ru>

Инструменты:

  • DeDe 3.10 (или другая версия)
  • Hiew
  • UPX
  • PE-Scan
  • Restorator 2.51
  • Немного мозгов :-)

Вступление

Описание программы от автора "Программа «Календарь» напомнит о приближающемся дне рождения Вашего друга и не даст пропустить любимый праздник. Программа обладает простым интерфейсом, а также включает в себя множество полезных функций: запуск вместе с Windows, возможность изменения цветов сообщений, картинка на заднем плане, воспроизведение фоновой музыки в формате MP3, и немного других не менее полезных функций.". Одним словом - чудо программа !!! (я кстати ей пользуюсь). Ограничения программы - запуск 100 раз, а потом "глючит", т.е. выводит не ту дату и пишет о том, что срок истек. Сайт разработчиков http://pv-soft.ru. В статье рассматривалась версия 4.3.

    Итак приступим. Для начала обследуем программу. При запуске в заголовке окна появляется надпись "(незарегистрированная копия)". Для того чтобы зарегистрироваться необходимо ввести владельца лицензии, организацию, регистрационный ключ, ну в общем стандартная защита. По истечении срока, запуск 100 раз, программа выводит события случайно сгенерированной даты и пишет назойливое сообщение вверху окна. И так приступим... Для начала как всегда откроем прогу с помощью ресторатора. Видим секции повреждены, следовательно запакована. Открываем ее с помощью PE-Scan. Видим - программа запакована с помощью UPX'а. Берем UPX распаковываем без проблем программу. Открываем прогу с помощью DeDe (забыл сказать прога написана на Delphi). Процессим как всегда, заходим на вкладку Procedures далее кликаем мышкой по T_MainForm. В событиях формы выбираем FormCreate. появляется кусок кода, листаем, пока не находим интересное:

* Reference to class TRegistry
|
0049F051 A1D44D4500 mov eax, dword ptr [$00454DD4]

* Reference to: Unit_00454D74.Proc_00454F40
|
0049F056 E8E55EFBFF call 00454F40
0049F05B 8BD8 mov ebx, eax
0049F05D BA02000080 mov edx, $80000002
0049F062 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_0045501C
|
0049F064 E8B35FFBFF call 0045501C
0049F069 B101 mov cl, $01

* Possible String Reference to: 'SOFTWARE\PV-soft\Календарь v4.3' <- Реестр в деле
|
0049F06B BA44F64900 mov edx, $0049F644
0049F070 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_00455160
|
0049F072 E8E960FBFF call 00455160
0049F077 84C0 test al, al
0049F079 7454 jz 0049F0CF
0049F07B 8D4DF0 lea ecx, [ebp-$10]

* Possible String Reference to: 'UserName' <- Интересно ....
|
0049F07E BA6CF64900 mov edx, $0049F66C
0049F083 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_00455348
|
0049F085 E8BE62FBFF call 00455348
0049F08A 8B55F0 mov edx, [ebp-$10]
0049F08D B8987B4E00 mov eax, $004E7B98

* Reference to: System.Proc_00403D48
|
0049F092 E8B14CF6FF call 00403D48
0049F097 8D4DEC lea ecx, [ebp-$14]

* Possible String Reference to: 'UserCompany' <- Интересно ....
|
0049F09A BA80F64900 mov edx, $0049F680
0049F09F 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_00455348
|
0049F0A1 E8A262FBFF call 00455348
0049F0A6 8B55EC mov edx, [ebp-$14]
0049F0A9 B89C7B4E00 mov eax, $004E7B9C

* Reference to: System.Proc_00403D48
|
0049F0AE E8954CF6FF call 00403D48
0049F0B3 8D4DE8 lea ecx, [ebp-$18]

* Possible String Reference to: 'RegNumber' <- Интересно ....
|
0049F0B6 BA94F64900 mov edx, $0049F694
0049F0BB 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_00455348
|
0049F0BD E88662FBFF call 00455348
0049F0C2 8B55E8 mov edx, [ebp-$18]
0049F0C5 B8A47B4E00 mov eax, $004E7BA4

* Reference to: System.Proc_00403D48
|
0049F0CA E8794CF6FF call 00403D48
0049F0CF 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_00454FEC
|
0049F0D1 E8165FFBFF call 00454FEC
0049F0D6 8D55E4 lea edx, [ebp-$1C]
0049F0D9 8B876C030000 mov eax, [edi+$036C]

* Reference to: AHMTSystemDetails.Proc_00496B10
|
0049F0DF E82C7AFFFF call 00496B10
0049F0E4 8B45E4 mov eax, [ebp-$1C]

* Possible String Reference to: 'Windows NT'
|
0049F0E7 BAA8F64900 mov edx, $0049F6A8

* Reference to: System.Proc_00404084
|
0049F0EC E8934FF6FF call 00404084
0049F0F1 7423 jz 0049F116 <- Первый условный переход. Запомним.
0049F0F3 33C9 xor ecx, ecx

* Possible String Reference to: 'Enum\Root\*PNP0C01\0000'
|
0049F0F5 BABCF64900 mov edx, $0049F6BC
0049F0FA 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_00455160
|
0049F0FC E85F60FBFF call 00455160
0049F101 84C0 test al, al
0049F103 7432 jz 0049F137 <- А вот и второй. Запомним.
0049F105 8D4DFC lea ecx, [ebp-$04]

* Possible String Reference to: 'BIOSDate'
|
0049F108 BADCF64900 mov edx, $0049F6DC
0049F10D 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_00455348
|
0049F10F E83462FBFF call 00455348
0049F114 EB21 jmp 0049F137
0049F116 33C9 xor ecx, ecx

* Possible String Reference to: 'SYSTEM\CurrentControlSet\Control\BI
| OSinfo'
|
0049F118 BAF0F64900 mov edx, $0049F6F0
0049F11D 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_00455160
|
0049F11F E83C60FBFF call 00455160
0049F124 84C0 test al, al
0049F126 740F jz 0049F137 <- Третий. Все как и у второго... Запомним.
0049F128 8D4DFC lea ecx, [ebp-$04]

* Possible String Reference to: 'SystemBiosDate'
|
0049F12B BA24F74900 mov edx, $0049F724
0049F130 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_00455348
|
0049F132 E81162FBFF call 00455348
0049F137 8D4DE0 lea ecx, [ebp-$20]
0049F13A 8B55FC mov edx, [ebp-$04]

* Possible String Reference to: 'CALENDAR'
|
0049F13D B83CF74900 mov eax, $0049F73C

* Reference to: Unit_00452438.Proc_00452628
|
0049F142 E8E134FBFF call 00452628
0049F147 8B55E0 mov edx, [ebp-$20]
0049F14A B8A07B4E00 mov eax, $004E7BA0

* Reference to: System.Proc_00403D48
|
0049F14F E8F44BF6FF call 00403D48
0049F154 8D55DC lea edx, [ebp-$24]
0049F157 A1A07B4E00 mov eax, dword ptr [$004E7BA0]

* Reference to: Buttons.Proc_00452438
|
0049F15C E8D732FBFF call 00452438
0049F161 8B55DC mov edx, [ebp-$24]
0049F164 A1A47B4E00 mov eax, dword ptr [$004E7BA4]

* Reference to: System.Proc_00404084
|
0049F169 E8164FF6FF call 00404084
0049F16E 7509 jnz 0049F179 <- Не интересно. Нет известных вызовов функций.
0049F170 C605AC704A0001 mov byte ptr [$004A70AC], $01
0049F177 EB07 jmp 0049F180
0049F179 C605AC704A0000 mov byte ptr [$004A70AC], $00
0049F180 BA00000080 mov edx, $80000000
0049F185 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_0045501C
|
0049F187 E8905EFBFF call 0045501C
0049F18C B101 mov cl, $01

* Possible String Reference to: 'CLSID\{EEEBB71A-D6E4-971E-52D5-0351
| E516AB46}'
|
0049F18E BA50F74900 mov edx, $0049F750
0049F193 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_00455160
|
0049F195 E8C65FFBFF call 00455160
0049F19A 84C0 test al, al
0049F19C 746D jz 0049F20B <- А вот это интересно. Перед этим знакомый вызов функции. Запомним.

* Possible String Reference to: '{D13E6790-B2D5-0AF1-6BCD-B08C01516F
| AB}'
|
0049F19E BA88F74900 mov edx, $0049F788
0049F1A3 8BC3 mov eax, ebx

* Reference to: Unit_00454D74.Proc_00455504
|
0049F1A5 E85A63FBFF call 00455504
0049F1AA 84C0 test al, al
0049F1AC 7415 jz 0049F1C3 <- Не интересно.

Далее идет опять код. Главное нам найти интересные условные переходы, перед которыми вызывались одни и те же функции, или условные переходы указывали на те же адреса. Далее находим такие же условные переходы по адресам: 0049F264, 0049F278, 0049F2BD, 0049F2E7. Листаем код дальше пока не наткнемся на такое: 

* Possible String Reference to: ' (незарегистрированная копия)'

Вот так да! Нашли то место, где программа проверяет на зарегистрированность. Смотрим выше и видим :

0049F327 7527 jnz 0049F350

Если прога зарегистрирована, то по этому адресу идет обход кода показа этой надписи. Итак имеем такие адреса:

0049F0F1, 0049F103, 0049F126, 0049F19C, 0049F264, 0049F278, 0049F2BD, 0049F2E7, 0049F327.

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

Разрешается копировать материал только с указанием источника и автора.

Copyright (c) -= ALEX =- . All rights reserved.



Обсуждение статьи: Взлом программы Календарь v4.3 >>>


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



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


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