Исследование защиты программы Mosaic Creator
Скриншот программы Mosaic Creator
Программа Mosaic Creator предназначена для создания из фотографии профессиональных коллажей на основе пачки исходных изображений, ASCII-арта, пикселизации исходного изображения, а также множества других эффектнейших преобразований графики. Тут можно посмотреть примеры готовых коллажей. Стоит ли говорить, что это все чего-то стоит?
Забираем с офсайта дистрибутив, устанавливаем, запускаем, смотрим. Без регистрации есть лимит по времени работы программы, существенные ограничения на размер готового изображения, а также недоступность ряда инструментов. Ну и в довесок при запуске открывается окно с триальным счетчиком. На ввод левых регистрационных данных программа реагирует следующим сообщением:
Сообщение о неправильной регистрации
Отлично, строка для анализа у нас есть. Исполняемый файл ничем не упакован, отправляем его на разбор в дизассемблер. Когда он закончит работу, по тексту строки сообщения выходим на следующий код:
Code (Assembler) : Убрать нумерацию
- CODE:0053B486 mov eax, [ebx+2EAh]
- ; Вызвать функцию проверки регистрации
- CODE:0053B48C call sub_61072C
- ; Сохранить ее результаты из EAX в ESI
- CODE:0053B491 mov esi, eax
- CODE:0053B493 loc_53B493:
- ; ESI = 0?
- CODE:0053B493 test esi, esi
- ; Нет, больше, значит программа имеет какую-то регистрацию
- CODE:0053B495 jge short loc_53B4E3
- CODE:0053B497 mov eax, [ebx+2C6h]
- CODE:0053B49D xor edx, edx
- CODE:0053B49F call sub_458CA0
- CODE:0053B4A4 push 0
- CODE:0053B4A6 lea edx, [ebp+var_18]
- CODE:0053B4A9 mov eax, offset aBadRegistratio
- ; "Bad registration number"
- CODE:0053B4AE call sub_5CAB28
- CODE:0053B4B3 mov eax, [ebp+var_18]
- CODE:0053B4B6 mov cx, word_53B804
- CODE:0053B4BD mov dl, 1
- CODE:0053B4BF call sub_451A58
- CODE:0053B4C4 inc ds:dword_668024
- CODE:0053B4CA cmp ds:dword_668024, 3
- CODE:0053B4D1 jl loc_53B745
- CODE:0053B4D7 mov eax, ebx
- CODE:0053B4D9 call sub_4757E4
- CODE:0053B4DE jmp loc_53B745
- CODE:0053B4E3 ; --------------------------------------
- CODE:0053B4E3 loc_53B4E3:
- CODE:0053B4E3 lea edx, [ebp+var_4]
- ; Сохранить данные регистрации
- CODE:0053B4E6 mov eax, offset aRegusernumber
- ; "RegUserNumber"
- CODE:0053B4EB call sub_602188
- CODE:0053B4F0 lea edx, [ebp+var_1C]
- CODE:0053B4F3 mov eax, [ebx+2C6h]
- CODE:0053B4F9 call sub_458C70
- CODE:0053B4FE mov edx, [ebp+var_1C]
- CODE:0053B501 mov eax, [ebp+var_4]
- CODE:0053B504 call sub_405308
- CODE:0053B509 jnz short loc_53B517
- CODE:0053B50B mov eax, ebx
- CODE:0053B50D call sub_4757E4
- CODE:0053B512 jmp loc_53B745
- CODE:0053B517 ; --------------------------------------
- CODE:0053B517 loc_53B517:
- CODE:0053B517 mov eax, [ebp+var_4]
- CODE:0053B51A mov edx, [ebx+2EAh]
- CODE:0053B520 call sub_405308
- CODE:0053B525 jnz short loc_53B547
- CODE:0053B527 lea edx, [ebp+var_20]
- CODE:0053B52A mov eax, [ebx+2C6h]
- CODE:0053B530 call sub_458C70
- CODE:0053B535 cmp [ebp+var_20], 0
- CODE:0053B539 jnz short loc_53B547
- CODE:0053B53B mov eax, ebx
- CODE:0053B53D call sub_4757E4
- CODE:0053B542 jmp loc_53B745
- CODE:0053B547 ; --------------------------------------
- CODE:0053B547 loc_53B547:
- CODE:0053B547 mov eax, ds:off_666A68
- CODE:0053B54C mov eax, [eax]
- CODE:0053B54E mov eax, [eax+562h]
- CODE:0053B554 xor edx, edx
- CODE:0053B556 call sub_44CAF4
- ; ESI = 1?
- CODE:0053B55B cmp esi, 1
- ; Если да, то регистрация для версии Lite
- CODE:0053B55E jnz short loc_53B580
- CODE:0053B560 push 0
- CODE:0053B562 lea edx, [ebp+var_24]
- CODE:0053B565 mov eax, offset aYouAreRegister
- ; "You are registered Lite version, thank "...
- CODE:0053B56A call sub_5CAB28
- CODE:0053B56F mov eax, [ebp+var_24]
- CODE:0053B572 mov cx, word_53B804
- CODE:0053B579 mov dl, 2
- CODE:0053B57B call sub_451A58
- CODE:0053B580 loc_53B580:
- ; ESI = 2?
- CODE:0053B580 cmp esi, 2
- ; Если нет, то что-то непонятное
- CODE:0053B583 jnz short loc_53B5A5
- ; Регистрация для версии Professional
- CODE:0053B585 push 0
- CODE:0053B587 lea edx, [ebp+var_28]
- CODE:0053B58A mov eax, offset aYouAreRegist_0
- ; "You are registered Professional version"...
- CODE:0053B58F call sub_5CAB28
- CODE:0053B594 mov eax, [ebp+var_28]
- CODE:0053B597 mov cx, word_53B804
- CODE:0053B59E mov dl, 2
- CODE:0053B5A0 call sub_451A58
Code (Assembler) : Убрать нумерацию
- CODE:0061072C sub_61072C proc near
- CODE:0061072C push ebp
- CODE:0061072D mov ebp, esp
- CODE:0061072F add esp, 0FFFFFFF8h
- CODE:00610732 push ebx
- CODE:00610733 push esi
- CODE:00610734 push edi
- CODE:00610735 mov [ebp+var_4], eax
- CODE:00610738 mov eax, [ebp+var_4]
- CODE:0061073B call sub_4053AC
- CODE:00610740 xor eax, eax
- CODE:00610742 push ebp
- CODE:00610743 push offset loc_610809
- CODE:00610748 push dword ptr fs:[eax]
- CODE:0061074B mov fs:[eax], esp
- CODE:0061074E mov [ebp+var_8], 0FFFFFFFFh
- CODE:00610755 cmp [ebp+var_4], 0
- CODE:00610759 jz loc_6107F3
- CODE:0061075F call sub_602144
- CODE:00610764 xor eax, eax
- CODE:00610766 push ebp
- CODE:00610767 push offset loc_6107E4
- CODE:0061076C push dword ptr fs:[eax]
- CODE:0061076F mov fs:[eax], esp
- CODE:00610772 mov eax, [ebp+var_4]
- CODE:00610775 call sub_61087C
- CODE:0061077A lea eax, [ebp+var_4]
- CODE:0061077D call sub_6108D8
- CODE:00610782 mov eax, [ebp+var_4]
- CODE:00610785 mov edx, offset dword_610824
- CODE:0061078A call sub_405308
- CODE:0061078F jnz short loc_610798
- CODE:00610791 mov [ebp+var_8], 2
- CODE:00610798 loc_610798:
- CODE:00610798 mov eax, [ebp+var_4]
- CODE:0061079B mov edx, offset dword_61083C
- CODE:006107A0 call sub_405308
- CODE:006107A5 jnz short loc_6107AE
- CODE:006107A7 mov [ebp+var_8], 2
- CODE:006107AE loc_6107AE:
- CODE:006107AE mov eax, [ebp+var_4]
- CODE:006107B1 mov edx, offset dword_610854
- CODE:006107B6 call sub_405308
- CODE:006107BB jnz short loc_6107C4
- CODE:006107BD mov [ebp+var_8], 1
- CODE:006107C4 loc_6107C4:
- CODE:006107C4 mov eax, [ebp+var_4]
- CODE:006107C7 mov edx, offset loc_61086C
- CODE:006107CC call sub_405308
- CODE:006107D1 jnz short loc_6107DA
- CODE:006107D3 mov [ebp+var_8], 1
- CODE:006107DA loc_6107DA:
- CODE:006107DA xor eax, eax
- CODE:006107DC pop edx
- CODE:006107DD pop ecx
- CODE:006107DE pop ecx
- CODE:006107DF mov fs:[eax], edx
- CODE:006107E2 jmp short loc_6107EE
- CODE:006107E4 ; --------------------------------------
- CODE:006107E4 loc_6107E4:
- CODE:006107E4 jmp sub_4045FC
- CODE:006107E9 ; --------------------------------------
- CODE:006107E9 call sub_404964
- CODE:006107EE loc_6107EE:
- CODE:006107EE call sub_602154
- CODE:006107F3 loc_6107F3:
- CODE:006107F3 xor eax, eax
- CODE:006107F5 pop edx
- CODE:006107F6 pop ecx
- CODE:006107F7 pop ecx
- CODE:006107F8 mov fs:[eax], edx
- CODE:006107FB push offset loc_610810
- CODE:00610800 loc_610800:
- CODE:00610800 lea eax, [ebp+var_4]
- CODE:00610803 call sub_404F0C
- CODE:00610808 retn
- CODE:00610809 ; --------------------------------------
- CODE:00610809 loc_610809:
- CODE:00610809 jmp loc_4048B0
- CODE:0061080E ; --------------------------------------
- CODE:0061080E jmp short loc_610800
- CODE:00610810 ; --------------------------------------
- CODE:00610810 loc_610810:
- CODE:00610810 mov eax, [ebp+var_8]
- CODE:00610813 pop edi
- CODE:00610814 pop esi
- CODE:00610815 pop ebx
- CODE:00610816 pop ecx
- CODE:00610817 pop ecx
- CODE:00610818 pop ebp
- CODE:00610819 retn
- CODE:00610819 sub_61072C endp
Программа успешно "зарегистрирована"
После ввода любых регистрационных данных программа радостно сообщает нам, что вы, мол, теперь зарегистрированная профессиональная версия, а также показывает пароль для архива с дополнительным контентом. По всей видимости, его можно скачать откуда-то с офсайта легально зарегистрированным пользователям. Закрываем программу, запускаем снова, проверяем функционал.
Программа успешно "зарегистрирована"
Цель достигнута, никаких ограничений по функционалу больше нет, никаких триальных окон больше не появляется. В окне "О программе" красуется введенное регистрационное имя.
Просмотров: 645 | Комментариев: 1
Метки: исследование защиты, графика
Комментарии
Отзывы посетителей сайта о статье
Добавить комментарий
Заполните форму для добавления комментария
Даже не надо быть легально зарегистрированным, пароль - единственное, что их защищает. На странице с загрузками вниз пролистать.