Blog. Just Blog

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

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

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

Скачиваем дистрибутив, устанавливаем. Предварительный осмотр показывает, что главный исполняемый файл AVSPhotoEditor.exe ничем не упакован, поэтому просто отправляем его в дизассемблер. После запуска сразу появляется окно с сообщением о том, что программа не зарегистрирована. Это первый признак триальности.

Сообщение незарегистрированной программы
Сообщение незарегистрированной программы

Второй явный признак - надпись в заголовке программы. Теперь попробуем зарегистрировать ее, для начала какими-нибудь левыми данными.

Сообщение о неправильной регистрации
Сообщение о неправильной регистрации

Как видим, для регистрации программы используется дополнительная утилита, вызываемая из исполняемого файла, а кроме того, по ее сообщению понятно, что введенный серийник проверяется на сервере. Это значит, что активировать программу нелегальным ключом без подтверждения его на сервере никак не получится. Остается один вариант - патч.

Небольшое лирическое отступление. При исследовании программ я использую поиск по ключевым словам - "unregistered", "regname", "license" и т.п. Как правило, или рядом с этими строками выполняются какие-то важные проверки, связанные с регистрацией, или на них можно выйти по перекрестным ссылкам.

Используется компонент LicenceManager
Используется компонент LicenceManager

Так вот, поиск по ключевым словам вывел меня на интересную строку. Судя по всему, это название компонента, используемого для работы с лицензией. Поищем его в дизассемблерном листинге.
  1. .text:0040BD88 ; __fastcall TLicenceManager::TLicenceManager(void)
  2. .text:0040BD88                 public @TLicenceManager@$bctr$qqrv
  3. .text:0040BD88 @TLicenceManager@$bctr$qqrv proc near
  4. .text:0040BD88
  5. .text:0040BD88 var_28          = dword ptr -28h
  6. .text:0040BD88 var_18          = word ptr -18h
  7. .text:0040BD88 var_C           = dword ptr -0Ch
  8. .text:0040BD88 var_8           = byte ptr -8
  9. .text:0040BD88 var_4           = dword ptr -4
  10. .text:0040BD88
  11. .text:0040BD88                 push    ebp
  12. .text:0040BD89                 mov     ebp, esp
  13. .text:0040BD8B                 add     esp, 0FFFFFFD8h
  14. .text:0040BD8E                 push    ebx
  15. ...
Листаем ниже. Это просто праздник какой-то :)) Тут и функция удаления лицензии, и получения количества лицензий, и еще всякое такое, но вот и суперприз - функция GetActualLicence. Все ее содержимое приводить не буду, только самую концовку:
  1. .text:0040C2CF                 mov     eax, [ebp+var_38]
  2. .text:0040C2D2                 mov     edx, [ebp+var_28]
  3. .text:0040C2D5                 mov     large fs:0, edx
  4. .text:0040C2DC                 pop     edi
  5. .text:0040C2DD                 pop     esi
  6. .text:0040C2DE                 pop     ebx
  7. .text:0040C2DF                 mov     esp, ebp
  8. .text:0040C2E1                 pop     ebp
  9. .text:0040C2E2                 retn
Очевидно, что функция возвращает какие-то значения в регистрах EAX и EDX. Рискну предположить, что EAX отвечает за положительный или отрицательный результат наличия и корректности лицензии. Вернемся на начало функции GetActualLicence и пропатчим его парой инструкций MOV EAX,1 и RET. Сохраняем изменения.

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

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

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

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

Комментарии

Отзывы посетителей сайта о статье
X-Wing Top Ace (12.08.2016 в 18:20):
ЦитатаГде анпак протектора?

А где там протектор, требующий делать распаковку? ;)))) Ясно же написано: "главный исполняемый файл AVSPhotoEditor.exe ничем не упакован".

ЦитатаКак то слабо...

Разводка на "слабо" засчитана. ;)
ManHunter (08.08.2016 в 15:26):
Я так гляжу, интернет просто ломится от неслабых листингов и нескатившихся анпаков протекторов. И среди этой массы офигенных увлекательных статей всегда можно найти альтернативу на почитать.
Jogovsky (08.08.2016 в 15:04):
Где экшон? Где огромные листинги функции проверки лицензии? Где анпак протектора? Как то слабо... скатился, отписка и всё такое...

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

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

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