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

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


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

Исследование WinCAM 2000

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

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

Автор: GL#0M gl00m-crk@yandex.ru

 Цель: WinCAM 2000
Инструменты: W32Dasm, Hiew.

О программе

"...никакая пошаговая инструкция со скриншотами по доступности подачи информации не может сравниться с видеороликом. Если вы согласны с последним утверждением, то WinCAM 2000 наверняка придется вам по вкусу. Программа позволяет записывать происходящее на Рабочем столе или в окнах приложений со звуковым сопровождением" - Журнал Chip 08/2003

Взлом

При запуске программы, перед нами появится Nag, в котором говорится, что время работы программы ограничено 15-ю днями. У нас есть возможность нажать на кнопку "Evaluate>>" или "Enter Code..." (которого мы, как обычно, не знаем =) Что ж, введём в поле "Key" любую ерунду и нажмём на "Enter Code...". В ответ на это вылетит грозный MessageBox, по имени "Register WinCAM 2000", и скажет нам "Invalid Software Key!!!" (неправильно значит...), а затем продолжится загрузка программы.

При беглом осмотре директории, куда была установлена программа, мы обнаружим интересный установочный файл - HLDRV32.EXE - Hardlock Device Driver.

Я ни разу не встречался с Hardlock, но, насколько мне известно, это одна из лучьших защит на сегодняшний день. Обычно, программа защищённая Hardlock, работает в DEMO-режиме, но, как только, в порт (LPT, USB, RS-232 и др.) компьютера, будет вставлен КЛЮЧ (специальное устройство), она начнёт работать в нормальном режиме, без каких-либо ограничений. КЛЮЧИ старых версий этой защиты можно было проэмулировать "вручную", а затем написать программный эмулятор КЛЮЧА. В последних же версиях Hardlock'а, возможность написания эмулятора есть, но только при наличии настоящего КЛЮЧА.

Подумав об этом, я двинулся в путь... (дисассемблируем WinCam.exe)

Программа написана при помощи MFC и, в начале листинга, идёт длинное описание меню и диалогов программы. Давайте поищим там что-нибудь связанное с регистрацией. "DialogID_0136" и "DialogID_01CF" - это то, что нам нужно. Хотя, если присмотреться, то "DialogID_0136" можно не трогать... А вот в "DialogID_01CF" можно увидеть заветную фразу "Thank you for...". Короче ищем все его вхождения. Как оказалось их всего одно... Посмотрим:
  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
 |:004019E2(U) // с этого адреса произошёл вызов
 |
 :00482840 55                      push ebp
  ---ВЫРЕЗАНО---
  * Possible Reference to Dialog: DialogID_01CF
 
 :00482876 68CF010000            push 000001CF
 :0048287B 8B4DF0                  mov ecx, dword ptr [ebp-10]
  ---ВЫРЕЗАНО---
 
Идём по адресу 004019E2:


  * Referenced by a CALL at Addresses:
 |:004AAB00 , :0050623E
 |
 :004019E2 E9590E0800              jmp 00482840
 :004019E7 E9B4AD0F00              jmp 004FC7A0
 ...
 
Что ж, идём на адрес 004AAB00:


  * Reference To: MFC42D.Ordinal:0746, Ord:0746h
 
 :004AAAEE E823BC0700              Call 00526716
 :004AAAF3 83F801                     cmp eax, 00000001
 :004AAAF6 7539                        jne 004AAB31 // если EAX <> 1 то прыгаем
 :004AAAF8 6A00                        push 00000000
 :004AAAFA 8D8D44FDFFFF           lea ecx, dword ptr [ebp+FFFFFD44]
 :004AAB00 E8DD6EF5FF               call 004019E2 // процедура вызова "Thank you..."
 :004AAB05 C645FC01                  mov [ebp-04], 01
 :004AAB09 8D8D44FDFFFF            lea ecx, dword ptr [ebp+FFFFFD44]
 ...
 
По адресу 004AAAF3 происходит сравнение регистра EAX с еденицей и если они не равны, то происходит прыжок на плохую мессагу, в противном случае "Thank you for...". Следовательно нам необходимо проделать следующее:


  * Reference To: MFC42D.Ordinal:0746, Ord:0746h
 
 :004AAAEE E823BC0700              Call 00526716
 :004AAAF3 33C0                       xor eax, eax       // обнуление регистра EAX
 :004AAAF5 40                           inc eax               // увеличиваем EAX на еденицу
 :004AAAF6 90                           nop                     // ничего не делаем
 :004AAAF7 90                           nop                     // :)
 :004AAAF8 6A00                        push 00000000
 :004AAAFA 8D8D44FDFFFF          lea ecx, dword ptr [ebp+FFFFFD44]
 :004AAB00 E8DD6EF5FF              call 004019E2
 :004AAB05 C645FC01                 mov [ebp-04], 01
 :004AAB09 8D8D44FDFFFF           lea ecx, dword ptr [ebp+FFFFFD44]
 ...
 
Теперь попробуем зарегестрироваться в программе... Вылетела ошибка, блин... Ладно, жмём "Сведения>>" и видим, что "упали" мы по адресу 00491E7F. Идём туда:


  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
 |:00491E1C(C)
 
 :00491E77 6A10                        push 00000010
 :00491E79 68C4595D00              push 005D59C4
 :00491E7E 68A8595D00              push 005D59A8      // здесь мы "падаем"
 :00491E83 8B4DFC                    mov ecx, dword ptr [ebp-04]
 ...
 
Идём по адресу 00491E1C:


 * Reference To: MFC42D.Ordinal:0370, Ord:0370h
 |
 :00491E0C E8454B0900              Call 00526956
 :00491E11 50                           push eax
 :00491E12 E8CB23F7FF              call 004041E2
 :00491E17 83C404                    add esp, 00000004
 :00491E1A 85C0                       test eax, eax
 :00491E1C 7459                       je 00491E77
 :00491E1E 8B4DFC                    mov ecx, dword ptr [ebp-04]
 :00491E21 81C178010000           add ecx, 00000178
 :00491E27 51                           push ecx
 :00491E28 8BD4                       mov edx, esp
 :00491E2A 8965F4                     mov dword ptr [ebp-0C], esp
 :00491E2D 51                           push ecx
 :00491E2E 8BCA                       mov ecx, edx
 ...
 
Ну, что, давайте ещё раз попробуем зарегистрироваться... "Thank you for purchasing WinCAM 2000." Нас просят перезагрузиться и... ОПЯТЬ Nag!


Так, посмотрим, что происходит в процедуре по адресу 00491E12:


 * Referenced by a CALL at Addresses:
 |:0049178C   , :00491E12   , :004BCB76
 |
 :004041E2 E929061000              jmp 00504810
 :004041E7 E944F70300              jmp 00443930
 ...
 
Аж, три вызова: 0049178C, 00491E12, 004BCB76. Идём по первому адресу:


 * Reference To: ADVAPI32.RegQueryValueExA, Ord:017Bh
 |
 :00491777 FF158C3C5F00            Call dword ptr [005F3C8C]
 :0049177D 3BF4                         cmp esi, esp
 
 * Reference To: MSVCRTD._chkesp, Ord:00C8h
 |
 :0049177F E896660900              Call 00527E1A
 :00491784 85C0                        test eax, eax
 :00491786 7540                        jne 004917C8
 :00491788 8B45F8                     mov eax, dword ptr [ebp-08]
 :0049178B 50                           push eax
 :0049178C E8512AF7FF              call 004041E2
 :00491791 83C404                     add esp, 00000004
 :00491794 85C0                        test eax, eax
 :00491796 7430                        je 004917C8
 :00491798 8BF4                        mov esi, esp
 :0049179A 8B4DFC                    mov ecx, dword ptr [ebp-04]
 :0049179D 51                           push ecx
 
 * Reference To: ADVAPI32.RegCloseKey, Ord:015Bh
                                   |
 :0049179E FF15883C5F00            Call dword ptr [005F3C88]
 :004917A4 3BF4                         cmp esi, esp
 ...
 
Видно, что здесь идёт проверка значения из реестра. И если оно неверно, то, по адресу 00491796, происходит прыжок на ошибку (т.е. выводит Nag).


Поэтому, внесём следующие изменения:


 * Reference To: MSVCRTD._chkesp, Ord:00C8h
 |
 :0049177F E896660900              Call 00527E1A
 :00491784 85C0                       test eax, eax
 :00491786 7540                       jne 004917C8
 :00491788 8B45F8                    mov eax, dword ptr [ebp-08]
 :0049178B 50                          push eax
 :0049178C E8512AF7FF             call 004041E2
 :00491791 83C404                    add esp, 00000004
 :00491794 33C0                       xor eax,eax
 :00491796 40                          inc eax
 :00491797 90                          nop
 :00491798 8BF4                      mov esi, esp
 :0049179A 8B4DFC                  mov ecx, dword ptr [ebp-04]
 :0049179D 51                         push ecx
 ...
 
Всё!!! Nag пропал, менюхи с просьбой о регистрации тоже, а в About'е "Thank you for purchasing WinCAM 2000 Professional Edition!!!" Т.е. всё rules!!! Удачи.


Этот материал опубликован в целях самообразования, за последствия которого Автор ответственности не несёт!

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


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



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


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