Blog. Just Blog

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

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы Color Pilot
Скриншот программы Color Pilot

Color Pilot от Two Pilots - отличная программа для цветокоррекции фотографий. Может быть профессионалы не согласятся, но как по мне, так одна из лучших программ для выполнения этой задачи. У Two Pilots для разных продуктов предусмотрены различные методы дистрибьюции. Где-то полноценный дистрибутив с регистрацией серийником, где-то для обычной загрузки доступна только урезанная демка, а ссылки на ретайловые дистрибутивы высылаются на почту только после оплаты. Когда-то давно я даже покупал лицензии на некоторые их программы, но исключительно чтобы получить доступ к полнофункциональным дистрибутивам для их дальнейшего исцеления. Color Pilot как раз относится к таким программам, у которых бесплатно доступен только триальный дистрибутив с урезанным функционалом и без возможности регистрации. Расстраиваться по этому поводу не стоит, может быть получится превратить программу в полноценную какими-нибудь другими способами.

Забираем с офсайта дистрибутив, устанавливаем, запускаем, ждем, еще ждем, еще немного ждем, снова ждем... Ну а чо вы хотели, программа написана на Qt. Главное триальное ограничение заключается в том, что программа сохраняет изображение не более 1024x1024 пикселей. При попытке сохранить изображение большего размера, появляется вот такое сообщение:

Ограничение триальной версии
Ограничение триальной версии

Начальная точка для исследования есть, главный исполняемый файл ничем не упакован, отправляем его на разбор в дизассемблер. Логично предположить, что для принятия решения о сохранении сперва должна быть выполнена проверка размера изображения. Когда листинг будет получен, поищем в нем строку сообщения о невозможности выполнить сохранение картинки.
  1. .text:00443CFF                 mov     [ebp+var_74], ecx
  2. .text:00443D02                 mov     ecx, ebx
  3. ; Получить ширину изображения
  4. .text:00443D04                 call    ds:_ZNK6QImage5widthEv
  5. ; Она меньше 1024 пикселей?
  6. .text:00443D0A                 cmp     eax, 400h
  7. ; Да, переход на следующую проверку
  8. .text:00443D0F                 jle     loc_443F4C
  9. .text:00443D15 loc_443D15:
  10. .text:00443D15                 mov     eax, ds:_ZN7QObject16staticMetaObjectE
  11. .text:00443D1A                 lea     ebx, [ebp+var_30]
  12. .text:00443D1D                 mov     dword ptr [esp+0Ch], 0FFFFFFFFh
  13. .text:00443D25                 mov     dword ptr [esp+8], 0
  14. .text:00443D2D                 mov     dword ptr [esp+4], offset aRegisteredCopy
  15. ; "Registered copy has no limitations!"
  16. .text:00443D35                 lea     esi, [ebp+var_3C]
  17. .text:00443D38                 mov     ecx, ebx
  18. .text:00443D3A                 mov     [esp], eax
  19. .text:00443D3D                 mov     eax, ds:_ZNK11QMetaObject2trEPKcS1_i
  20. .text:00443D42                 mov     edi, eax
  21. .text:00443D44                 mov     [ebp+var_84], eax
  22. .text:00443D4A                 call    eax ; _ZNK11QMetaObject2trEPKcS1_i
  23. .text:00443D4C                 mov     eax, ds:_ZN7QObject16staticMetaObjectE
  24. .text:00443D51                 sub     esp, 10h
  25. .text:00443D54                 mov     ecx, esi
  26. .text:00443D56                 mov     dword ptr [esp+0Ch], 0FFFFFFFFh
  27. .text:00443D5E                 mov     dword ptr [esp+8], 0
  28. .text:00443D66                 mov     dword ptr [esp+4], offset aUnregistered_0
  29. ; "Unregistered copy of program doesn't al"...
  30. .text:00443D6E                 mov     [esp], eax
  31. .text:00443D71                 call    edi
  32. .text:00443D73                 lea     eax, [ebp+var_38]
Тут выполняется проверка ширины изображения, если она превышает 1024 пиксела, то выводится сообщение о триальном ограничении. Иначе выполняется переход на следующую проверку. Заменяем условный переход по адресу 00443D0F на безусловный и смотрим код дальше.
  1. .text:00443F4C                 mov     ecx, ebx
  2. ; Получить высоту изображения
  3. .text:00443F4E                 call    ds:_ZNK6QImage6heightEv
  4. ; Она больше 1024 пикселей?
  5. .text:00443F54                 cmp     eax, 400h
  6. ; Да, вывести сообщение о триальном ограничении
  7. .text:00443F59                 jg      loc_443D15
  8. .text:00443F5F                 mov     eax, ds:_ZN10QArrayData11shared_nullE
  9. .text:00443F64                 lea     ebx, [ebp+var_58]
  10. .text:00443F67                 mov     [esp], ebx
  11. .text:00443F6A                 mov     [ebp+var_5C], eax
  12. .text:00443F6D                 lea     eax, [ebp+var_5C]
  13. .text:00443F70                 mov     [ebp+var_6C], eax
Тут проверяется высота изображения на предмет все тех же 1024 пикселов. Если размер картинки превышает это значение, то выполняется переход на вывод триального сообщения. Забиваем условный переход по адресу 00443F59 командами NOP. Применяем все сделанные изменения, открываем какое-нибудь большое изображение и пытаемся его сохранить.

Ограничение на сохранение снято
Ограничение на сохранение снято

Никаких уведомлений больше не появляется, файл успешно сохраняется на диск. Цель достигнута. Остались только триальные надписи в заголовке и окне "О программе", но это уже как-нибудь переживем.

Поделиться ссылкой ВКонтакте
Просмотров: 1305 | Комментариев: 5

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
MH100181Q (08.11.2021 в 00:10):
Уже понял, что статью по диагонали почёл)
Начал нопить, не сработало, стал по строкам искать
ManHunter (07.11.2021 в 23:24):
Разве
ЦитатаЗаменяем условный переход по адресу 00443D0F на безусловный

это не оно?
MH100181Q (07.11.2021 в 23:11):
по инструкции не сработало, сделал так:
00443D0F | 0F8E 37020000            | jle colorpilot.443F4C                   |
00443D0F | E9 38020000              | jmp colorpilot.443F4C                   |
ManHunter (29.09.2021 в 17:43):
Ага, ее я как раз и покупал. Там хитрая ссылка на закачку с корявым названием вложенной папки. Сейчас эта ссылка не действует, последняя доступная версия была 3.3.1. В качестве альтернативы прекрасно справляется мой TPI to JPEG Converter https://www.manhunter.ru/relea...ter_2_0.html
Ivo (27.09.2021 в 18:31):
Жаль, что Retouch Pilot ещё не разминирована.

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.006 сек.) / Память: 4.5 Mb
Наверх