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

Скриншот программы WinToFlash
Программа WinToFlash предназначена для создания загрузочных и установочных флешек из дистрибутивов Windows, LiiveCD, антивирусных дисков и других носителей. В базовой версии программа даже считается бесплатной, но при этом она крутит рекламу и ограничена по функционалу. Профессиональные редакции этих недостатков лишены, но зато имеют более крупный недостаток - необходимость выкладывать бабло за лицензию. Софтина реально хорошая и полезная, но при всем уважении, платить за софт не в моих правилах.
Попробуем привести к нормальному бою самую максимальную Business-версию. Забираем с офсайта дистрибутив, устанавливаем, запускаем. Первоначальное предложение активировать просто игнорируем, при следующем старте программа запускается уже с главного окна. Признаков незарегистрированной программы предостаточно: надпись в заголовке окна, сообщение об отсутствующем файле лицензии в окне "О программе", а главное - ограничение по функционалу. Любая попытка создать загрузочную флешку однозначно заканчивается требованием зарегистрироваться.

Сообщение незарегистрированной программы
Главный исполняемый файл ничем не упакован, отправляем его в дизассемблер. Поиск точек отсчета начнем с текста в окне "О программе".

Строка в файле
Это не совсем сообщение, а индекс, который используется для загрузки строки в мультиязычном интерфейсе. Ну ничего, посмотрим, как и где он используется.
Code (Assembler) : Убрать нумерацию
- .text:00203875 lea eax, [ebp+var_C]
- .text:00203878 push eax
- .text:00203879 call AboutDialogDataUpdate
- .text:0020387E lea eax, [ebp+var_4]
- .text:00203881 xor edx, edx
- .text:00203883 call sub_16C9C
- ; Указатель на блок настроек
- .text:00203888 mov eax, off_237D4C
- .text:0020388D mov eax, [eax]
- ; Проверить байт регистрации
- .text:0020388F cmp byte ptr [eax+51h], 0
- ; Программа не зарегистрирована
- .text:00203893 jz loc_203B3F
- .text:00203899 mov eax, off_237D4C
- .text:0020389E mov eax, [eax]
- .text:002038A0 cmp byte ptr [eax+78h], 0
- .text:002038A4 jnz loc_203995
- .text:002038AA lea eax, [ebp+var_8]
- ...
- ...
- ...
- .text:00203B3F loc_203B3F:
- .text:00203B3F lea eax, [ebp+var_4]
- .text:00203B42 push eax
- .text:00203B43 mov eax, [ebx]
- .text:00203B45 mov ecx, offset aAboutLicenseNo
- ; "About - License - No valid key file fou"...
- .text:00203B4A xor edx, edx
- .text:00203B4C call sub_1735D4
Code (Assembler) : Убрать нумерацию
- .text:001809B7 mov byte ptr [ebx+25h], 0
- .text:001809BB mov byte ptr [ebx+51h], 0
- .text:001809BF mov dword ptr [ebx+58h], 0
- .text:001809C6 mov dword ptr [ebx+5Ch], 0
- .text:001809CD mov dword ptr [ebx+60h], 0
- .text:001809D4 mov dword ptr [ebx+64h], 0

Программа с регистрацией Lite
Догадка оказалась правильной, в заголовке красуется Lite-лицензия. Уже лучше, но еще не совсем то что надо, ведь Lite-версия также немного ограничена по функционалу. Значит кроме самого признака зарегистрированности должен быть тип лицензии. Найдем строку названия текущей лицензии.

Строка в файле
Строка найдена, по перекрестным ссылкам ищем место, где она используется. Обнаруживается следующий код:
Code (Assembler) : Убрать нумерацию
- ; Проверить байт зарегистрированности
- .text:001F87D7 movzx ebx, byte ptr [eax+51h]
- .text:001F87DB test bl, bl
- .text:001F87DD jz short loc_1F883A
- ; Проверить тип лицензии
- .text:001F87DF mov eax, off_237D4C
- .text:001F87E4 mov eax, [eax]
- .text:001F87E6 mov eax, [eax+60h]
- .text:001F87E9 sub eax, 1
- .text:001F87EC jb short loc_1F87FB
- .text:001F87EE jz short loc_1F880D
- .text:001F87F0 dec eax
- .text:001F87F1 jz short loc_1F881C
- .text:001F87F3 dec eax
- .text:001F87F4 jz short loc_1F882B
- .text:001F87F6 jmp loc_1F888F
- .text:001F87FB ; -----------------------------------------
- .text:001F87FB loc_1F87FB:
- .text:001F87FB lea eax, [ebp+var_4]
- .text:001F87FE mov edx, offset aLiteNonCommerc
- ; " Lite (non-commercial use only)"
- .text:001F8803 call sub_16C9C
- .text:001F8808 jmp loc_1F888F
- .text:001F880D ; ----------------------------------------
- .text:001F880D loc_1F880D:
- .text:001F880D lea eax, [ebp+var_4]
- .text:001F8810 mov edx, offset aHome ; " Home"
- .text:001F8815 call sub_16C9C
- .text:001F881A jmp short loc_1F888F
- .text:001F881C ; ----------------------------------------
- .text:001F881C loc_1F881C:
- .text:001F881C lea eax, [ebp+var_4]
- .text:001F881F mov edx, offset aProfessional
- ; " Professional"
- .text:001F8824 call sub_16C9C
- .text:001F8829 jmp short loc_1F888F
- .text:001F882B ; ----------------------------------------
- .text:001F882B loc_1F882B:
- .text:001F882B lea eax, [ebp+var_4]
- .text:001F882E mov edx, offset aBusiness
- ; " Business"
- .text:001F8833 call sub_16C9C
- .text:001F8838 jmp short loc_1F888F

Программа успешно "зарегистрирована"

Программа успешно "зарегистрирована"
Теперь в заголовке программы красуется максимально доступная версия Business, в окне "О программе" тоже, попытка повторной активации радует нас сообщением, что все уже активировано. Проверяем функционал, все работает без каких-либо ограничений. Цель достигнута. Спасибо автору за отличную программу!
Просмотров: 3006 | Комментариев: 5
Метки: исследование защиты, система

Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
SendMessageA
(06.05.2017 в 20:05):
:D "Профессиональные редакции этих недостатков лишены, но зато имеют более крупный недостаток - необходимость выкладывать бабло за лицензию."

wet
(06.05.2017 в 19:57):
Загрузчик от Windows больше приспособлен и ориентирован на загрузку нескольких ОС Windows, если же есть несколько различных систем + Linux то наверно и GRUB может пригодиться, хотя я предпочитаю виртуальные машины, они гораздо удобнее.
"проверка накопителя" - чего его проверять если работает?
Исправление ошибки Windows XP/2003 Setup 0x6B - это видно что-то специфичное при установке ХР именно с флешки? Ибо с десяток раз ставил ХР с CD, ни какой ошибки ни когда не возникало. Но в любом случае, не актуально уже наверно ХР.
Я не спорю, на халяву можно активировать все эти фишки, пусть будут, такой запас лишнее место на HDD не просит.
Просто удивляюсь, что наверно находятся люди, которые за это платят???
"проверка накопителя" - чего его проверять если работает?
Исправление ошибки Windows XP/2003 Setup 0x6B - это видно что-то специфичное при установке ХР именно с флешки? Ибо с десяток раз ставил ХР с CD, ни какой ошибки ни когда не возникало. Но в любом случае, не актуально уже наверно ХР.
Я не спорю, на халяву можно активировать все эти фишки, пусть будут, такой запас лишнее место на HDD не просит.
Просто удивляюсь, что наверно находятся люди, которые за это платят???

ManHunter
(06.05.2017 в 17:51):
А как же поддержка загрузчика GRUB, опция проверки накопителя и исправление ошибки Windows XP/2003 Setup 0x6B?

wet
(06.05.2017 в 17:45):
Как можно прочитать, основное отличие лицензионной программы это :Вы получите свой собственный файл лицензии и WinToFlash будет отображать ваше имя в диалоге О Программе.
Значит, если реклама не парит, то в принципе, взлом программы ни чего не дает. Тем более, такой сомнительный пункт, за который просят $100, как "Разрешение на использование в бизнесе" :)
Значит, если реклама не парит, то в принципе, взлом программы ни чего не дает. Тем более, такой сомнительный пункт, за который просят $100, как "Разрешение на использование в бизнесе" :)

pawel97
(05.05.2017 в 13:24):
Аааа, Семён Семёныч! А я бессрочный акционный ключ когда-то разбанивал, по-другому не смог...

Добавить комментарий
Заполните форму для добавления комментария
