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

Скриншот программы PhotoEQ
Программа PhotoEQ предназначена для редактирования изображений. PhotoEQ автоматически исправляет баланс белого, экспозицию и контрастность, позволяет изменять размер, обрезать, вращать изображение, увеличивать резкость, устранять шумы и удалять эффект "красных глаз". Все делается через интуитивно понятный интерфейс, результат редактирования отображается рядом с оригиналом, поэтому легко визуально сравнить что было, и что стало. Но, в отличие от изображений, слова "софт" и "купить" в моем понимании рядом находиться не могут.
Скачиваем дистрибутив, устанавливаем. Если зайти в папку с установленной программой, то там обнаружится целая куча исполняемых файлов, нас пока интересует только главный файл photoEQ.exe. Он ничем не упакован, отправляем его в дизассемблер. При запуске сразу появляется окно с предложением зарегистрироваться.

Окно регистрации программы
Первое, что бросается в глаза - окно отличается по стилю от окна основного приложения. Менеджер процессов подтверждает, что это не просто так, а приложением был запущен файл RegisterPhotoEQ.exe, который отвечает за ввод регистрационного ключа. Этот файл ковырять не имеет смысла, ведь в основном файле все равно остается нетронутой проверка введенного серийника. Значит надо привязываться к внешним проявлениям триальности, например, к надписи в заголовке программы "Unlicensed Trial Version".

Строка сообщения
Никаких проблем, юникодная строка найдена. Теперь в дизассемблере посмотрим, где и при каких условиях она используется.
Code (Assembler) : Убрать нумерацию
- .text:009F8070 push ebx
- .text:009F8071 mov ebx, eax
- .text:009F8073 mov eax, [ebx+880h]
- .text:009F8079 mov eax, [eax+18h]
- ; Вызвать функцию проверки
- .text:009F807C call sub_9ED0B8
- ; AL!=0 - программа считается зарегистрированной
- .text:009F8081 test al, al
- .text:009F8083 jnz short loc_9F80E6
- ; Изменить текст в заголовке окна на "Unlicensed Trial Version"
- .text:009F8085 mov byte ptr [ebx+834h], 0
- .text:009F808C mov byte ptr [ebx+835h], 0
- .text:009F8093 mov eax, [ebx+880h]
- .text:009F8099 mov eax, [eax+18h]
- .text:009F809C call sub_9ED2AC
- .text:009F80A1 mov edx, 0Ah
- .text:009F80A6 sub edx, eax
- .text:009F80A8 mov [ebx+830h], edx
- .text:009F80AE mov edx, offset aPhotoeqUnlicen
- ; "PhotoEQ - Unlicensed Trial Version"
- .text:009F80B3 mov eax, ebx
- .text:009F80B5 call sub_4C92B4
- .text:009F80BA cmp dword ptr [ebx+830h], 0
- .text:009F80C1 jge short loc_9F80CB
- .text:009F80C3 xor eax, eax
- .text:009F80C5 mov [ebx+830h], eax

Программа успешно "зарегистрирована"
Кстати, целая куча исполняемых файлов в папке с программой - это не просто так. Вместо того, чтобы самостоятельно разобраться в вопросе и написать что-то свое, аффтар использует БЕСПЛАТНЫЕ утилиты других разработчиков для выполнения различных операций, заявленных в своей программе. Так что я не вижу ничего предосудительного в том, чтобы сделать оболочку для их запуска тоже бесплатной.
Просмотров: 4761 | Комментариев: 6
Метки: исследование защиты, графика

Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(07.09.2015 в 14:55):
После RET ничего не выполняется

hatmaster
(06.09.2015 в 23:01):
С заменой перехода более-менне понятно. А вот с функцией проверки - т.е. подменяются первые 2 команды, а оставшаяся часть кода нас никак не затрагивает?

X-Wing Top Ace
(26.08.2015 в 15:29):
Замечу, что такая взломка устойчива к введению в исходники дополнительных вызовов чекушки рега, хотя понятно, что этим примитивом улучшение кода защиты, очевидно, не исчерпывается. Но многие аффтары как раз с этого начинают.
Если можно не материться в коде, то в нем незачем материться. Второй вариант с подменой результата намного лучше.
И даже не пишет, что это он для них написал оболочку. Тем более поддерживаю и одобряю взломку этой оболочки! ;)
Я тоже - мы ж не копирасты какие, чтоб в этом видеть что-то предосудительное! ;)

user
(22.08.2015 в 15:21):
Понятно.. Версия 8.42
У меня старьё. Юникодные таблицы-то есть для кириллицы, но отображается всё байт-в-байт.
Есть и новые версии, использую только в некоторых случаях. Видимо, с юникодом это тоже будет такой вот случай.
У меня старьё. Юникодные таблицы-то есть для кириллицы, но отображается всё байт-в-байт.
Есть и новые версии, использую только в некоторых случаях. Видимо, с юникодом это тоже будет такой вот случай.

ManHunter
(22.08.2015 в 13:11):
В текстовом режиме можно переключиться на юникод (F8 - Unicode-CP_OEMCP) и потом искать строку без всяких нулей. http://rghost.ru/6VSzbJBmy/image.png

user
(22.08.2015 в 10:21):
Кстати, если не секрет, как ищете в Hiew юникодные строки?
Тоже тупо вставкой 0 (или 4)после каждого символа?
Тоже тупо вставкой 0 (или 4)после каждого символа?

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