Исследование WinZip 8.0 BETA (3046)

Перейти на главную страницу, индексную страницу.


Используемые программы: Numega Soft Ice 3.25, WinDASM 8.93

Устанавливаем bpx hmemcpy , для простоты можно
сразу bpx GetDlgItemTextA. В регистрационном окне
вводим Name : Dexim и S/N: 12121212 - что нибудь отфонарно .
Нажимаем "Ок" и вываливаемся в S-ICE .
Дальше видно  ,что после функций GetDlgItemTextA в стек записываются
адреса Name (0048CF28) и S/N (0048CF54).

------
:00407FAB BF28CF4800              mov edi, 0048CF28   ; Name
:00407FB0 6A29                    push 00000029
:00407FB2 57                      push edi
------
* Reference To: USER32.GetDlgItemTextA, Ord:0104h
                                  |
:00407FB9 FF1524744700            Call dword ptr [00477424]
:00407FBF 57                      push edi            ; Name <- (Сюда мы вываливаемся)
------
:00407FCC BE54CF4800              mov esi, 0048CF54   ; S/N
:00407FD1 59                      pop ecx
------
* Reference To: USER32.GetDlgItemTextA, Ord:0104h
                                  |
:00407FDB FF1524744700            Call dword ptr [00477424]
:00407FE1 56                      push esi            ; S/N <-
------

Ниже следует проверка это видно по последовательности комманд
call , test и je . Вот собствено в этой функции все и происходит.

------
:00407FED 803D28CF480000          cmp byte ptr [0048CF28], 00
:00407FF4 59                      pop ecx
:00407FF5 59                      pop ecx
:00407FF6 7459                    je 00408051
:00407FF8 803D54CF480000          cmp byte ptr [0048CF54], 00
:00407FFF 7450                    je 00408051
:00408001 E81BFAFFFF              call 00407A21       ; Check
:00408006 85C0                    test eax, eax
:00408008 7447                    je 00408051
------

Заходим внутрь функции (00408001) .
Трассируем до адреса (00407AEA).
Тут и есть самое инерестное в функцию передается адрес S/N ввденного нами и
в EAX заносится адрес S/N сгенеренного программой (В моем случае - это
014C0444) . Мы просто делаем "d eax" и выписываем его на бумажку .
По адресу (00407B1) происходит тоже самое , а вот чуть ниже по адресу
(0407B1E) мы видим , что по адресу в eax содежится уже другрй номер
(в моем случае 22401092) и , что самое интересное , что он тоже
правильный .

------
:00407AEA BE54CF4800              mov esi, 0048CF54
:00407AEF 8D85C0FEFFFF            lea eax, dword ptr [ebp+FFFFFEC0]
:00407AF5 56                      push esi
:00407AF6 50                      push eax
:00407AF7 E8440D0600              call 00468840
:00407AFC 83C410                  add esp, 00000010
:00407AFF F7D8                    neg eax
:00407B01 1BC0                    sbb eax, eax
:00407B03 40                      inc eax
:00407B04 A38CA14800              mov dword ptr [0048A18C], eax
:00407B09 7568                    jne 00407B73
:00407B0B 8D85C0FEFFFF            lea eax, dword ptr [ebp+FFFFFEC0]
:00407B11 50                      push eax
:00407B12 57                      push edi
:00407B13 E818010000              call 00407C30
:00407B18 8D85C0FEFFFF            lea eax, dword ptr [ebp+FFFFFEC0]
:00407B1E 56                      push esi
:00407B1F 50                      push eax
:00407B20 E81B0D0600              call 00468840
-----

Оказывается WinZip генерит два номера и поочередно сравнивает
их с введеным . Теперь для регистрации просто остается ввести один из
номеров.



Author : Dexim
E-mail: dexim#cydem.zp.ua


Материалы размещены на http://cracklab.narod.ru/doc/ с разрешения http://cydem.zp.ua/






Hosted by uCoz