Исследование защиты программы Grungetastic
Скриншот программы Grungetastic
Программа Grungetastic предназначена для добавления к вашим фотографиям эффектов в стиле Grunge. В результате получается нечто мрачное, похожее на кадры из Silent Hill, и даже от самой доброй фотографии начинают бегать мурашки по коже. Цена, к счастью, невысока, но на сайте разработчиков еще целая груда аналогичных программ, и если покупать каждую, то итоговая сумма набегает более чем приличная. Попробуем обойтись вообще без покупки.
Скачиваем дистрибутив, устанавливаем, смотрим что получилось. Приложение представляет из себя один исполняемый файл размером более 70 мегабайт. Файл ничем не упакован, поэтому сразу отправляем его в дизассемблер, а параллельно посмотрим как проявляется триальность. Основное ограничение в том, что без регистрации сохранить отредактированный файл нельзя.
Окно регистрации вызывается через меню Help. Регистрационного имени нет, только серийный номер. Причем программа сама подсказывает правильную длину серийника - 16 символов.
Окно регистрации
На неправильный ввод программа реагирует сообщением "Invalid Serial Number".
Сообщение о неправильной регистрации
Если вы не первый раз читаете мой блог, то последующие действия должны быть вам хорошо известны. Сперва найдем в файле саму строчку. С этим никаких проблем не возникает, вот она:
Строка сообщения найдена
В листинге дизассемблера находим место, где есть указатель на эту строчку. Тоже никаких проблем:
Code (Assembler) : Убрать нумерацию
- ...
- .text:0044CBF2 call sub_58BD4D
- .text:0044CBF7 mov esi, eax
- .text:0044CBF9 add esp, 4
- .text:0044CBFC mov [ebp+var_1C], esi
- .text:0044CBFF mov bl, 4
- .text:0044CC01 mov byte ptr [ebp+var_4], bl
- .text:0044CC04 test esi, esi
- .text:0044CC06 jz loc_44CCD5
- .text:0044CC0C push 0
- .text:0044CC0E push ecx
- .text:0044CC0F mov eax, esp
- .text:0044CC11 lea edx, [ebp+var_10]
- .text:0044CC14 mov [ebp+var_18], esp
- .text:0044CC17 push edx
- .text:0044CC18 push eax
- .text:0044CC19 mov [ebp+var_10], offset aInvalidSerialN
- ; "Invalid Serial Number."
- .text:0044CC20 call sub_46BD00
- .text:0044CC25 add esp, 4
- .text:0044CC28 mov byte ptr [ebp+var_4], 5
- .text:0044CC2C mov eax, esp
- .text:0044CC2E lea ecx, [ebp+var_10]
- .text:0044CC31 mov [ebp+var_14], esp
- .text:0044CC34 push ecx
- .text:0044CC35 push eax
- .text:0044CC36 mov [ebp+var_10], offset aInvalidSerial
- ; "Invalid Serial"
- .text:0044CC3D call sub_46BD00
- .text:0044CC42 add esp, 4
- .text:0044CC45 mov byte ptr [ebp+var_4], 6
- .text:0044CC49 mov [ebp+var_10], esp
- .text:0044CC4C lea edx, [ebp+var_10]
- .text:0044CC4F mov eax, esp
- ...
Code (Assembler) : Убрать нумерацию
- .text:0044CB47 mov edx, [eax+0B8h]
- .text:0044CB4D add esp, 8
- .text:0044CB50 mov ecx, esi
- ; Неявно вызвать какую-то функцию
- .text:0044CB52 call edx
- ; Проверить ее результат
- .text:0044CB54 test al, al
- ; Если AL!=0, то переход на сообщение о правильной регистрации
- .text:0044CB56 jnz loc_44CC5B
- .text:0044CB5C lea eax, [ebp+arg_0]
- ; Проверить длину введенного серийника
- .text:0044CB5F call sub_45BB00
- .text:0044CB64 push 0D0h
- ; Если длина 16 символов, то серийник просто неправильный
- .text:0044CB69 cmp eax, 10h
- .text:0044CB6C jz loc_44CBF2
- ; Иначе сообщение о неправильной длине введенного серийника
Code (Assembler) : Убрать нумерацию
- .text:00401560 push ebp
- .text:00401561 mov ebp, esp
- .text:00401563 push ecx
- .text:00401564 push esi
- .text:00401565 push ecx
- .text:00401566 mov esi, ecx
- .text:00401568 mov eax, [esi]
- .text:0040156A mov edx, [eax+0BCh]
- .text:00401570 mov ecx, esp
- .text:00401572 mov [ebp+var_4], esp
- .text:00401575 push ecx
- .text:00401576 mov ecx, esi
- .text:00401578 call edx
- .text:0040157A push 47525431h
- .text:0040157F call sub_425120
- .text:00401584 add esp, 8
- .text:00401587 test al, al
- .text:00401589 jz short loc_401592
- .text:0040158B mov al, 1
- .text:0040158D pop esi
- .text:0040158E mov esp, ebp
- .text:00401590 pop ebp
- .text:00401591 retn
- .text:00401592 ; -----------------------------------------
- .text:00401592 loc_401592:
- .text:00401592 mov eax, [esi]
- .text:00401594 mov edx, [eax+0BCh]
- .text:0040159A push ecx
- .text:0040159B mov ecx, esp
- .text:0040159D mov [ebp+var_4], esp
- .text:004015A0 push ecx
- .text:004015A1 mov ecx, esi
- .text:004015A3 call edx
- .text:004015A5 push 424E4431h
- .text:004015AA call sub_425120
- .text:004015AF add esp, 8
- .text:004015B2 test al, al
- .text:004015B4 setnz al
- .text:004015B7 pop esi
- .text:004015B8 mov esp, ebp
- .text:004015BA pop ebp
- .text:004015BB retn
Программа успешно "зарегистрирована"
Пункт регистрации в меню пропал, вместе с ним пропало ограничение при попытке сохранения отредактированного файла. Цель достигнута. Сигнатура для патча очень приметная, так что можно сделать универсальный патч. Кроме того, аналогичным образом исцеляются от жадности и другие программы этого разработчика.
Просмотров: 5471 | Комментариев: 12
Метки: исследование защиты, графика
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
NezloY
(07.07.2015 в 22:53):
У них сейчас появилась программа все-в-одном, один exe-шник весит около 700 м, там же плагины к фотошопу, правда не standalon-ные, скачивается свободно, лечится правкой одной проверочной функции.
ManHunter
(03.07.2014 в 11:14):
У них, кстати, с новыми версиями немного поменялась защита, теперь проверка вынесена в одну функцию:
Такая же приметная сигнатура, можно легко сделать универсальный патч вообще для всех программ JixiPix Software, старых и новых.
Такая же приметная сигнатура, можно легко сделать универсальный патч вообще для всех программ JixiPix Software, старых и новых.
ManHunter
(03.07.2014 в 07:15):
На офсайте написано что-то типа "The Premium Pack is now available as a plugin to Photoshop, Elements and Lightroom! The Premium Pack (Plugin) bundles the Ultimate Photography Suite, the Artista Series, the Creative Collection and now Aquarella, Artoon and Chalkspiration to give you 18 of our best products that seamlessly integrate into Adobe applications."
Тоже все за деньги, естественно. И прямой ссылки на закачку нет, только на покупку.
Тоже все за деньги, естественно. И прямой ссылки на закачку нет, только на покупку.
Maksovich
(03.07.2014 в 01:39):
А для фотошопа нет этой же программы в виде плагина?
ManHunter
(18.09.2013 в 14:11):
Нет
Vasiliy
(18.09.2013 в 14:11):
Уважаемый ManHunter, было бы очень интересно увидеть в вашем исполнении "Исследование защиты программы PhotoInstrument", что-то очень она мудреная... К тому же, хоть программка удобная, но платить за оболочку для freeware плагинов 50-100 зеленых - как-то через чур. Поможете?
ManHunter
(18.09.2013 в 12:03):
В дампе курсор на начало строки, затем Ctrl+R
Имя
(18.09.2013 в 11:57):
Можно подробнее? Нашел я строку в херкс редакторе. Как потом найти ссылку на нее в отладчике OllyDbg? Как определить перекрестные ссылки?
ManHunter
(09.09.2013 в 13:54):
При наличии ровных рук и умения это все можно наколхозить и в фотошопе. А тут можно просто тыкать в кнопку "кубики" и ждать, когда картинка станет до нужной степени страшной :)
Андрей
(09.09.2013 в 13:35):
Мне причудилось что "а сейчас будет урок фотошопа" с выдранными png-шками.
user
(09.09.2013 в 03:29):
((( Однако же они офигели чуток - 128 мегабайт чудо...
За такое платить преступно.
Операционная система Windows98 весит примерно столько же.
За такое платить преступно.
Операционная система Windows98 весит примерно столько же.
Добавить комментарий
Заполните форму для добавления комментария
Итицкая сила... У меня ЭТО запускалось 6 минут, специально засекал. Нафиг-нафиг такое счастье. На офсайте есть все ихние поделия по отдельности.