Используемые программы: 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/