Исследование защиты программы Face Off Max
Скриншот программы Face Off Max
Программа Face Off Max предназначена для быстрого создания коллажей из фотографий, когда с одной фотографии вырезается лицо и накладывается на другое тело. Все выполняется в удобном пошаговом мастере, есть куча настроек и инструментов, короче, полный набор для баловства. Программа постоянно обновляется, я не удивлюсь, если через пару дней после выхода статьи на офсайте будет лежать новая версия. Непонятно что там обновляется, но зато какой простор для "творчества" у варезных групп! Можно каждую неделю выпускать очередной релиз.
Ссылку на закачку дистрибутива не указываю по причине частого обновления, посмотрите сами на офсайте. Скачиваем, устанавливаем, смотрим. Главный исполняемый файл ничем не упакован, так что по давно выработанной последовательности действий отправляем его в дизассемблер. Пока тот перемалываем байты, посмотрим, как проявляется триал и какие есть ограничения в программе.
Триальное окно
После запуска открывается триальное окно, в котором кратенько написано об ограничениях. А именно наложение водяного знака на готовое изображение. При попытке ввода серийника выясняется, что программа активируется через интернет на своем сервере. Оффлайн-активация тоже есть, но она привязывается к конкретному компьютеру.
Сообщение о неправильной активации
В заголовке окна красуется надпись "Trial". Попробуем найти ее. В языковом файле English.lan обнаруживается строчка "CAPTION_Trial=(Trial)", то есть обращение к строке в исполняемом файле надо искать по ее индексу "CAPTION_Trial". Найдется юникодная строка.
Строка найдена в файле
Теперь вернемся в дизассемблер и посмотрим, где есть код, ссылающийся на эту строку, а также условия ее появления:
Code (Assembler) : Убрать нумерацию
- .text:00691FFC cmp byte ptr [eax+8Ch], 0
- .text:00692003 jz short loc_69203D
- .text:00692005 call sub_68DA00
- ; Проверить флаг зарегистрированности
- .text:0069200A cmp byte ptr [eax+0E0h], 1
- .text:00692011 jz short loc_69203D
- ; Если он не равен 1, то добавить в заголовок окна триальную надпись
- .text:00692013 push [ebp+var_8]
- .text:00692016 push offset asc_6920E0 ; " "
- .text:0069201B call sub_68DA00
- .text:00692020 lea ecx, [ebp+var_10]
- .text:00692023 mov edx, offset aCaption_trial ; "CAPTION_Trial"
- .text:00692028 call sub_68F824
- .text:0069202D push [ebp+var_10]
- .text:00692030 lea eax, [ebp+var_8]
- .text:00692033 mov edx, 3
- .text:00692038 call sub_407F90
Патчим файл
Мы заменили проверку CMP на команду MOV, а условный переход поменяли на безусловный. Сохраняем изменения, запускаем программу.
Программа успешно "зарегистрирована"
Наг-окно пропало, пункты покупки и регистрации в меню стали неактивными, плашка с напоминанием о покупке пропала, триальная надпись в заголовке окна тоже. Если создать новый проект и пройти все шаги до сохранения изображения, то и там никаких ограничений тоже не будет. Цель достигнута. Несколько дней до следующего релиза можно заняться другими делами.
Просмотров: 2710 | Комментариев: 7
Метки: исследование защиты, графика
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Alex
(31.05.2017 в 14:41):
Пока блокирую фаерволом этот IP
Соединение по TCP
Спасибо за совет.
Будем пробовать.
Соединение по TCP
Спасибо за совет.
Будем пробовать.
ManHunter
(31.05.2017 в 14:02):
Поискать вызовы соответствующих функций, поискать фрагменты строк типа "http" или имени сервера, а также места, где эти строки используются. Вариантов много.
Alex
(31.05.2017 в 13:51):
Приветствую.
Смотрю тут одну программку.
При старте прога лезет на сервак проверяться.
Если её не пустить в начале, то программа работает в Pro
В теле зашиты серийники.
Регистрирую одним из них, всё Ок.
Но видать они уже забанены.
И вот вопрос:
Как узнать код откуда она лезет на сервак проверяться?
Смотрю тут одну программку.
При старте прога лезет на сервак проверяться.
Если её не пустить в начале, то программа работает в Pro
В теле зашиты серийники.
Регистрирую одним из них, всё Ок.
Но видать они уже забанены.
И вот вопрос:
Как узнать код откуда она лезет на сервак проверяться?
brute
(18.05.2017 в 13:51):
Спасибо! Попробую отыскать динозавра с ХП..
ManHunter
(18.05.2017 в 12:14):
Ну ведь нашли же. Если бы не нашли, то статья была бы другой. Поиск строк в памяти и бряки на чтение/запись под отладчиком никто не отменял.
_Физическая_ машина с Windows XP + Decomas для аспра, Армагеддон для армы прекрасно справляются. Я распаковываю на старом нетбуке, под XP распаковщики работают в разы стабильнее и корректнее, чем на W7+
Другой вопрос, что и арма, и аспр предлагают помимо навеса еще множество других механизмов типа шифрованного кода и наномитов. С этим уже автоматикой справиться сложнее, или вовсе не справиться.
brute
(18.05.2017 в 11:56):
Есть несколько вопросов по этой проге и вообще:
1. Прога на делфи, соответственно есть свои сложности/особенности
а. при поиске процедуры обработки серийника - так как бряк на мессаге вываливается далеко от процедуры проверки (да, можно идр заюзать..)
б. не работает поиск строк в оле/иде, они не находят ссылки на строки! Ну, ида пытается увидеть ссылку, но путает код с данными..
в. ворос №1: почему не работает метод: tempesta - бряк на обработчиках "74 0E 8B D3 8B 83 ?? ?? ?? FF 93"? Описание было здесь: https://exelab.ru/f/index.php?...00&page=3#26
Аттач удалён (могу залить), но думаю смысл понятен - ставится бряк на обработчики и когда прыжок не происходит, мы заходим в последующий call и попадаем на процедуру обработки нашего кода.
То есть, если бы мы не нашли строку "CAPTION_Trial" и ссылки на неё, то, имхо, с поиском других строк и ссылок на них, а также с реверсом процедури проверки были бы проблемы..
Вопрос №2. Есть ли какие-нибудь "советы" по снятию последних армадилы и аспра? Например, пост №24 в запросе на взлом екзелаба есть некий "Web Content Extractor", накрытый аспром. Автоматические распаковщики и последний скрипт с тутсей "ASProtect 1.3x - 2.xx Unpacker v1.15F" его не берёт (может, у меня руки кривые.. пробовал на W7.)
Второй вопрос особенно актуальный, так как половина "интересного" платного софта накрыта армой/аспром.
1. Прога на делфи, соответственно есть свои сложности/особенности
а. при поиске процедуры обработки серийника - так как бряк на мессаге вываливается далеко от процедуры проверки (да, можно идр заюзать..)
б. не работает поиск строк в оле/иде, они не находят ссылки на строки! Ну, ида пытается увидеть ссылку, но путает код с данными..
в. ворос №1: почему не работает метод: tempesta - бряк на обработчиках "74 0E 8B D3 8B 83 ?? ?? ?? FF 93"? Описание было здесь: https://exelab.ru/f/index.php?...00&page=3#26
Аттач удалён (могу залить), но думаю смысл понятен - ставится бряк на обработчики и когда прыжок не происходит, мы заходим в последующий call и попадаем на процедуру обработки нашего кода.
То есть, если бы мы не нашли строку "CAPTION_Trial" и ссылки на неё, то, имхо, с поиском других строк и ссылок на них, а также с реверсом процедури проверки были бы проблемы..
Вопрос №2. Есть ли какие-нибудь "советы" по снятию последних армадилы и аспра? Например, пост №24 в запросе на взлом екзелаба есть некий "Web Content Extractor", накрытый аспром. Автоматические распаковщики и последний скрипт с тутсей "ASProtect 1.3x - 2.xx Unpacker v1.15F" его не берёт (может, у меня руки кривые.. пробовал на W7.)
Второй вопрос особенно актуальный, так как половина "интересного" платного софта накрыта армой/аспром.
Добавить комментарий
Заполните форму для добавления комментария
CPU Disasm
Address Hex dump Command Comments
00691153 |. E8 546DD7FF CALL 00407EAC
00691158 |. 8B55 98 MOV EDX,DWORD PTR SS:[LOCAL.26]
0069115B |. 8B45 F4 MOV EAX,DWORD PTR SS:[LOCAL.3]
0069115E |. E8 0150D8FF CALL 00416164
00691163 84C0 TEST AL,AL
00691165 74 20 JZ SHORT 00691187
00691167 |. 8B45 FC MOV EAX,DWORD PTR SS:[LOCAL.1]
0069116A |. C680 E0000000 MOV BYTE PTR DS:[EAX+0E0],1
00691171 |. 8B45 FC MOV EAX,DWORD PTR SS:[LOCAL.1]
00691174 |. 33D2 XOR EDX,EDX
делаем mov AL,1 и нопим условный переход