Исследование защиты программы Wise Video Converter
Скриншот программы Wise Video Converter
Wise Video Converter - видеоконвертер с поддержкой множества форматов, который позволяет обработать видео для воспроизведения на компьютере и на мобильных устройствах. Хотя по сути это всего лишь очередная цветастая обертка, паразитирующая на бесплатной библиотеке FFmpeg. Из великой программерской мысли тут только нарисованный интерфейс. Ну что ж, будем восстанавливать справедливость.
Берем с сайта дистрибутив, устанавливаем, смотрим что и как. Основной исполняемый файл не упакован и не защищен, отправляем его на разбор в дизассемблер. Пока тот работает, выясним проявления триальности и реакцию на левые регистрационные данные.
Сообщение о неправильной регистрации
Программа многоязычная, строки локализации хранятся в ini-файлах, строке сообщения соответствует индекс InvalidKey. Поищем ее в дизассемблере и выясним условия, при которых она появляется:
Code (Assembler) : Убрать нумерацию
- .text:0056691D jz short loc_566924
- .text:0056691F sub eax, 4
- .text:00566922 mov eax, [eax]
- .text:00566924 loc_566924:
- ; Проверить длину серийника, она должна быть 26 (1Ah) символов
- .text:00566924 cmp eax, 1Ah
- .text:00566927 jz short loc_56697C
- .text:00566929 push 1
- .text:0056692B movzx eax, ds:word_566B24
- .text:00566932 push eax
- .text:00566933 lea eax, [ebp+var_4C]
- .text:00566936 push eax
- .text:00566937 mov ecx, offset aError_3 ; "Error"
- .text:0056693C mov edx, offset aError_3 ; "Error"
- .text:00566941 mov eax, offset aTranslation_2
- ; "Translation"
- .text:00566946 call sub_5427EC
- .text:0056694B mov eax, [ebp+var_4C]
- .text:0056694E push eax
- .text:0056694F lea eax, [ebp+var_50]
- .text:00566952 push eax
- .text:00566953 mov ecx, offset aInvalidLicense
- ; "Invalid license key."
- .text:00566958 mov edx, offset aInvalidkey
- ; "InvalidKey"
Code (Assembler) : Убрать нумерацию
- .text:0056698A lea eax, [ebx+3BCh]
- .text:00566990 call sub_406064
- .text:00566995 lea ecx, [ebp+var_8]
- .text:00566998 mov edx, offset aWisevideoconve
- ; "WiseVideoConverter2.x"
- .text:0056699D mov eax, [ebx+3BCh]
- .text:005669A3 call sub_54226C
- .text:005669A8 mov eax, [ebp+var_8]
- ; Вызвать функцию проверки
- .text:005669AB call sub_541C68
- ; Если AL=0, то введенные регистрационные данные неправильные
- .text:005669B0 test al, al
- .text:005669B2 jz loc_566A85
- .text:005669B8 mov byte ptr [ebx+3B4h], 1
- .text:005669BF lea eax, [ebp+var_C]
- .text:005669C2 push eax
- .text:005669C3 lea edx, [ebp+var_80]
- .text:005669C6 mov eax, [ebx+3A0h]
- .text:005669CC mov eax, [eax+2BCh]
- .text:005669D2 call sub_40CF80
- .text:005669D7 mov eax, [ebp+var_80]
- .text:005669DA mov [ebp+var_7C], eax
- .text:005669DD mov [ebp+var_78], 11h
- .text:005669E1 lea edx, [ebp+var_84]
- .text:005669E7 mov eax, [ebx+3A4h]
- .text:005669ED mov eax, [eax+2BCh]
- .text:005669F3 call sub_40CF80
- .text:005669F8 mov eax, [ebp+var_84]
- .text:005669FE mov [ebp+var_74], eax
- .text:00566A01 mov [ebp+var_70], 11h
- .text:00566A05 lea edx, [ebp+var_88]
- .text:00566A0B xor eax, eax
- .text:00566A0D call sub_40CF80
- .text:00566A12 mov eax, [ebp+var_88]
- .text:00566A18 mov [ebp+var_6C], eax
- .text:00566A1B mov [ebp+var_68], 11h
- .text:00566A1F mov [ebp+var_64], 0Bh
- .text:00566A26 mov [ebp+var_60], 0
- .text:00566A2A lea edx, [ebp+var_8C]
- .text:00566A30 mov eax, [ebp+var_4]
- .text:00566A33 call sub_40CF80
- .text:00566A38 mov eax, [ebp+var_8C]
- .text:00566A3E mov [ebp+var_5C], eax
- .text:00566A41 mov [ebp+var_58], 11h
- .text:00566A45 lea edx, [ebp+var_7C]
- ; Проверить регистрацию на сервере
- .text:00566A48 mov ecx, 4
- .text:00566A4D mov eax, offset aHttpReg_wisecl
- ; "http://reg.wisecleaner.com/order/regche"...
- .text:00566A52 call unknown_libname_128
- .text:00566A57 mov ecx, [ebp+var_C]
- .text:00566A5A mov dl, 1
- .text:00566A5C mov eax, ds:off_4CCEF4 ; lpThreadId
- .text:00566A61 call @Webauto@TIteratorSupport
- .text:00566A66 mov byte ptr [eax+0Fh], 1
- .text:00566A6A mov [eax+7Ch], ebx
- .text:00566A6D mov dword ptr [eax+78h], offset sub_565AC8
- .text:00566A74 mov [eax+6Ch], ebx
- .text:00566A77 mov dword ptr [eax+68h], offset sub_565C30
- .text:00566A7E call @Classes@TThread@Resume$qqrv
- .text:00566A83 jmp short loc_566ADF
- .text:00566A85 ; --------------------------------------------
- .text:00566A85 loc_566A85:
- .text:00566A85 push 1
- .text:00566A87 movzx eax, ds:word_566B24
- .text:00566A8E push eax
- .text:00566A8F lea eax, [ebp+var_90]
- .text:00566A95 push eax
- .text:00566A96 mov ecx, offset aError_3 ; "Error"
- .text:00566A9B mov edx, offset aError_3 ; "Error"
- .text:00566AA0 mov eax, offset aTranslation_2
- ; "Translation"
- .text:00566AA5 call sub_5427EC
- .text:00566AAA mov eax, [ebp+var_90]
- .text:00566AB0 push eax
- .text:00566AB1 lea eax, [ebp+var_94]
- .text:00566AB7 push eax
- .text:00566AB8 mov ecx, offset aInvalidLicense
- ; "Invalid license key."
- .text:00566ABD mov edx, offset aInvalidkey
- ; "InvalidKey"
- .text:00566AC2 mov eax, offset aMessage_2
- ; "Message"
- .text:00566AC7 call sub_5427EC
- .text:00566ACC mov edx, [ebp+var_94]
- .text:00566AD2 mov eax, off_5C3F98
Программа успешно "зарегистрирована"
В интерфейсе надпись "FREE" сменилась на "PRO", пропала кнопка покупки и пункт регистрации в меню. Ограничений по продолжительности обрабатываемого файла в 30 минут тоже нет. Цель достигнута.
Просмотров: 583 | Комментариев: 3
Метки: исследование защиты, мультимедиа
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(01.08.2023 в 15:01):
Там длина серийника должна быть 26 символов. Или запатчить условный переход. Добавил в статью, спасибо.
Сергей
(01.08.2023 в 15:00):
Разобрался вроде. Индекс InvalidKey встречается 2 раза, пройти первый надо просто условный переход по адрессу 00566927 меняем на безусловный, затем нас пускает к проверке ключа и далее как в статье.
Сергей
(01.08.2023 в 14:50):
Что то не так, поставил брекпоинт по адрессу 00541C68, запустил программу данные адресс не задейстован, попробовал ввести любые данные license error и данный адресс также не задействует
Добавить комментарий
Заполните форму для добавления комментария