|
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
|