Исследование защиты программы Emicsoft MTS Converter


Скриншот программы Emicsoft MTS Converter

После покупки видеокамеры мне потребовалась программа для конвертирования видео из формата MTS в какой-нибудь более удобоваримый. Перепробовал несколько разных решений, как бесплатных, так и шароварных, в результате остановился на Emicsoft MTS Converter. Простейшая в настройках программа, при этом на выходе она дает самый лучший результат. Как обычно, всю малину испортила необходимость ее покупки.

Скачиваем дистрибутив, устанавливаем, запускаем. Сразу открывается окно с предложением ввести регистрационные данные или перейти на сайт для покупки:


Окно регистрации программы

На ввод левых регистрационных данных программа реагирует сообщением "The registration code is error." Еще, блин, одни грамотеи. Ладно, посмотрим где это у нас находится. Главный исполняемый файл Emicsoft MTS Converter.exe занимает подозрительно мало места для такой программы - всего около 90 килобайт, и это при том, что он даже ничем не упакован. Подозрения оправдались, искомая строка в нем не находится ни в каком виде.


Файл со строкой найден

На помощь приходит Total Commander, поиском по всему каталогу с вложенными папками файл находится очень быстро. Ну вот, другое дело - dll почти на 16 мегабайт, с его именем, правда, аффтары тоже соригинальничали: EmicVideoMui_dll.dll Посмотрим, при каких условиях появляется сообщение о неправильной регистрации.
...
.text:0041666C                 lea     ecx, [ebp+var_54]
.text:0041666F                 push    ecx
.text:00416670                 lea     eax, [esi+328h]
.text:00416676                 push    eax
; Вызвать функцию проверки регистрационных данных
.text:00416677                 call    sub_41BCE4
.text:0041667C                 add     esp, 8
.text:0041667F                 mov     edx, 2
; Занести в стек результат ее работы
.text:00416684                 push    eax
.text:00416685                 lea     eax, [ebp+var_54]
.text:00416688                 dec     dword ptr [ebx+1Ch]
.text:0041668B                 call    sub_594E88
; Восстановить из стека результат ее работы
.text:00416690                 pop     ecx
.text:00416691                 test    cl, cl
; Если CL=0, то регистрационные данные неправильные, переход на
; триальную ветку алгоритма
.text:00416693                 jz      short loc_4166BA
; Выдать сообщение об успешной регистрации
.text:00416695                 push    0               ; uType
.text:00416697                 push    offset aRegistration_1
; "Registration"
.text:0041669C                 push    offset aSuccessful
; "Successful"
.text:004166A1                 mov     eax, esi
.text:004166A3                 call    @Controls@TWinControl@GetHandle$qqrv
.text:004166A8                 push    eax             ; hWnd
.text:004166A9                 call    MessageBoxA
.text:004166AE                 mov     dword ptr [esi+24Ch], 1
.text:004166B8                 jmp     short loc_416733
.text:004166BA ; --------------------------------------------------------
.text:004166BA loc_4166BA:
; Сообщение о неправильном регистрационном коде
.text:004166BA                 push    10h             ; uType
.text:004166BC                 push    offset aRegistration_2
; "Registration"
.text:004166C1                 push    offset aTheRegistratio
; "The registration code is error."
.text:004166C6                 mov     eax, esi
.text:004166C8                 call    @Controls@TWinControl@GetHandle$qqrv
.text:004166CD                 push    eax             ; hWnd
.text:004166CE                 call    MessageBoxA
...

Нас интересует функция проверки регистрационного номера по адресу 41BCE4, а точнее ее результат. Там используется какая-то криптография, да еще и загружаемая из внешнего модуля. Тратить время на разбор всей этой каши у меня нет никакого желания, так что ограничусь классическим патчем. Нам надо, чтобы функция проверки вернула ненулевое значение в регистре EAX, которое затем будет записано в стек и потом будет проверяться. Значит требуется просто записать пару команд MOV AL,1; RET в начало функции проверки по адресу 41BCE4. Сохраняем изменения, запускаем. Окно регистрации пропало, никаких ограничений нет. Теперь на сэкономленную денежку можно затариться пивом и углубиться в процесс обработки видео из отпуска.
Теги:
защита, взлом
Добавлено: 19 Сентября 2013 02:45:22 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...