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

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


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

KeyGen для WinCAM 2000

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

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

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

 Цель: WinCAM 2000
Инструменты: SoftICE и любой компилятор.

О программе

Взял я новый Chip (10/2003), как обычно, смотрю список программ, и на глаза мне попадается WinCAM 2000. Да что же это такое!? Им что ли выложить на сидюк больше нечего?!!!
Решил завершить исследование на новой версии, а проще говоря сделать keygen...

Взлом

Заходим в программу, вводим любые 17 символов, например: 12512512512512512. Ставим breakpoint на hmemcpy (bpx hmemcpy F5) и нажимаем "Enter Code..." В SoftICE жмём F12, пока не выйдем в адресное пространство программы. Пробегаем по F10 до вот такого кода:

 * Reference To: MFC42D.Ordinal:0370, Ord:0370h
                                   |
 :004BA9F0 E8AD610800              Call 00540BA2
 :004BA9F5 50                           push eax
 :004BA9F6 E87F96F4FF              call 0040407A // заходим...
 :004BA9FB 83C404                    add esp, 00000004
 :004BA9FE 85C0                       test eax, eax
 :004BAA00 7456                       je 004BAA58
 :004BAA02 8B45FC                    mov eax, dword ptr [ebp-04]
 :004BAA05 0534010000              add eax, 00000134
 :004BAA0A 51                           push ecx
 :004BAA0B 8BCC                       mov ecx, esp
 :004BAA0D 8965F4                    mov dword ptr [ebp-0C], esp
 :004BAA10 50                          push eax
 ...
 
В call 0040407A, начная с 00503940 и по 00503B83, идёт длиннющая сверка введённого кода с "ГОСТ"-ом, так сказать... =) Короче номерок должен выглядеть, например, вот так: 1-1234-123-4321-1. Далее, с 00503BBC по 00503D61, идёт "посимвольное сложение" чисел *1234-123-4321* (или какие там у вас?), т.е. 1+2+3+4+1+2+3+4+3+2+1=26. А затем:


 :00503D64 8B45BC                  mov eax, dword ptr [ebp-44]      // EAX := сумма чисел
 :00503D67 99                         cdq
 :00503D68 B91A000000            mov ecx, 0000001A      // EСX := 26
 :00503D6D F7F9                      idiv ecx
 :00503D6F 83C241                  add edx, 00000041      // к остатку прибавляем 65.
 :00503D72 8855C0                  mov byte ptr [ebp-40], dl      // запоминаем букву.
 :00503D75 0FBE55C0                movsx edx, byte ptr [ebp-40]
 :00503D79 0FBE45E4                movsx eax, byte ptr [ebp-1C]
 :00503D7D 3BD0                      cmp edx, eax
 :00503D7F 7407                      je 00503D88
 :00503D81 33C0                      xor eax, eax
 :00503D83 E98A000000            jmp 00503E12      // на ошибку
 
 *---------------вырезано---------------*
 
 * Reference To: MSVCRTD._chkesp, Ord:00C8h
 |
 :00503D99 E8C8E20300              Call 00542066
 :00503D9E 8945B8                     mov dword ptr [ebp-48], eax     // EAX = 1234 (например).
 :00503DA1 817DB8D0070000        cmp dword ptr [ebp-48], 000007D0
 :00503DA8 7D04                       jge 00503DAE      // если > или = 2000, то прыжок
 :00503DAA 33C0                       xor eax, eax
 :00503DAC EB64                       jmp 00503E12       // на ошибку
 ...
 
Теперь понятно, что номерок, например, должен быть такой: K-2000-123-2000-1. Ладно, смотрим дальше:


 ...
 * Reference To: MSVCRTD._chkesp, Ord:00C8h
 |
 :00503DD8 E889E20300           Call 00542066
 :00503DDD 8945B0                  mov dword ptr [ebp-50], eax
 :00503DE0 8B4DB8                  mov ecx, dword ptr [ebp-48] // ECX := 2000
 :00503DE3 034DB4                  add ecx, dword ptr [ebp-4C] // + 123
 :00503DE6 034DB0                  add ecx, dword ptr [ebp-50] // + 2000
 :00503DE9 894DAC                  mov dword ptr [ebp-54], ecx
 :00503DEC 8B45AC                  mov eax, dword ptr [ebp-54] // EAX := 4123
 :00503DEF 99                         cdq
 :00503DF0 B91A000000            mov ecx, 0000001A
 :00503DF5 F7F9                      idiv ecx
 :00503DF7 83C241                  add edx, 00000041
 :00503DFA 8855C0                  mov byte ptr [ebp-40], dl // запоминаем букву.
 :00503DFD 0FBE55C0                movsx edx, byte ptr [ebp-40]
 :00503E01 0FBE45CC                movsx eax, byte ptr [ebp-34]
 :00503E05 3BD0                      cmp edx, eax
 :00503E07 7404                      je 00503E0D
 :00503E09 33C0                      xor eax, eax
 :00503E0B EB05                      jmp 00503E12 // на ошибку
 
 * Referenced by a (U)nconditional or (C)onditional Jump at Address:
 |:00503E07(C)
 |
 :00503E0D B801000000              mov eax, 00000001
 ...
 
Ну, всё... из комментариев, надеюсь, всё понятно. Кейгеним! Удачи!


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

Обсуждение статьи: KeyGen для WinCAM 2000 >>>


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



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


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