[CRACKING] [MISCELLANEOUS] [DOWNLOADS] [LINKS] [CONTACTS]

Взлом и защита программного обеспечения

 

EditPlus v2.00e. Исследование защиты от взлома.

  EditPlus v2.00e - продвинутый редактор, включающий поддержку Ява, перл, С/С+, HTML, имеет встроенный броузер.
  Без регистрации программа работает 30 дней. Странным кажется то, что и после истечения этого срока EditPlus продолжает работать. При попытке ввести неправильный код выдается сообщение: "Invalid registration code".
  Итак, начнем исследование. Нам потребуется W32dasm, HEX-редактор HIEW v6.4, PEiD и распаковщик  UnPetite для Petite v2.2 (этим пакером сжат EditPlus.ехе, в чем можно убедиться с помощью PE iD).
  Распаковываем прогу и дизассемблируем в W32dasm. Ищем текст "Invalid registration code". Строки с таким сообщением встречаются два раза. Второй случай более интересен:

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0046035E(C), :0046036C(C)
|
:00460373 3BC3            cmp eax, ebx
:00460375 881C30          mov byte ptr [eax+esi], bl
:00460378 0F84D5000000    je 00460453
:0046037E 8B44240C        mov eax, dword ptr [esp+0C]
:00460382 3958F8          cmp dword ptr [eax-08], ebx
:00460385 0F84C8000000    je 00460453
:0046038B 8D4C240C        lea ecx, dword ptr [esp+0C]
:0046038F E8EA170400      call 004A1B7E
:00460394 8B4C240C        mov ecx, dword ptr [esp+0C]
:00460398 51              push ecx
:00460399 56              push esi
:0046039A E891010000      call 00460530
:0046039F 83C408          add esp, 00000008
:004603A2 85C0            test eax, eax
:004603A4 7513            jne 004603B9
:004603A6 6AFF            push FFFFFFFF
:004603A8 6A10            push 00000010

* Possible Reference to String Resource ID=24449: "Invalid registration code.
                                                   Please check that you entered exa"
|
:004603AA 68815F0000      push 00005F81
:004603AF E8CA8E0400      call 004A927E
:004603B4 E9A1000000      jmp 0046045A


  По адресу 004603A2 явная проверка на правильность серийного номера. Если ЕАХ=0, то код неверный и появляется соответствующее окошко с сообщением. Если по адресу 004603A4 исправить jne 004603B9 на je 004603B9, то при вводе неправильного кода результат будет положительный, но при следующем запуске программа объявит введенный серийный номер неправильным. Будем разбираться дальше. 
  Посмотрим, что представляет собой функция, вызываемая  по адресу 0046039A (call 00460530):

* Reference To: KERNEL32.lstrlenA, Ord:0000h
|
:00460534 8B1D0CB44C00   mov ebx, dword ptr [004CB40C]
:0046053A 56             push esi
:0046053B 57             push edi
:0046053C 8B7C241C       mov edi, dword ptr [esp+1C]
:00460540 57             push edi
:00460541 FFD3           call ebx
:00460543 8BF0           mov esi, eax
:00460545 85F6           test esi, esi
:00460547 7507           jne 00460550
:00460549 5F             pop edi
:0046054A 5E             pop esi
:0046054B 5B             pop ebx
:0046054C 83C40C         add esp, 0000000C
:0046054F C3             ret


  Попробуем изменить jne 00460550 на je 00460550 по адресу 00460547 (для этого в HEX-редакторе по адресу .460547 нужно изменить 75 на 74, или в режиме ассемблерного кода нажать клавишу TAB и заменить jne на je). Только нужно взять резервную копию файла EditPlus.ехе, а не ту, что мы недавно подправили.
  Пытаемся зарегистрироваться с неправильным кодом и… все работает как нам надо!!!

  Информация приведена исключительно в ознакомительных целях. Применение данной информации в незаконных целях категорически запрещается.

©  BioCyborG, 2002

 © BioCyborG
www.biocyborg.narod.ru

Hosted by uCoz