Blog. Just Blog

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

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

Программа Face Off Max предназначена для быстрого создания коллажей из фотографий, когда с одной фотографии вырезается лицо и накладывается на другое тело. Все выполняется в удобном пошаговом мастере, есть куча настроек и инструментов, короче, полный набор для баловства. Программа постоянно обновляется, я не удивлюсь, если через пару дней после выхода статьи на офсайте будет лежать новая версия. Непонятно что там обновляется, но зато какой простор для "творчества" у варезных групп! Можно каждую неделю выпускать очередной релиз.

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

Триальное окно
Триальное окно

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

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

В заголовке окна красуется надпись "Trial". Попробуем найти ее. В языковом файле English.lan обнаруживается строчка "CAPTION_Trial=(Trial)", то есть обращение к строке в исполняемом файле надо искать по ее индексу "CAPTION_Trial". Найдется юникодная строка.

Строка найдена в файле
Строка найдена в файле

Теперь вернемся в дизассемблер и посмотрим, где есть код, ссылающийся на эту строку, а также условия ее появления:
  1. .text:00691FFC                 cmp     byte ptr [eax+8Ch], 0
  2. .text:00692003                 jz      short loc_69203D
  3. .text:00692005                 call    sub_68DA00
  4. ; Проверить флаг зарегистрированности
  5. .text:0069200A                 cmp     byte ptr [eax+0E0h], 1
  6. .text:00692011                 jz      short loc_69203D
  7. ; Если он не равен 1, то добавить в заголовок окна триальную надпись
  8. .text:00692013                 push    [ebp+var_8]
  9. .text:00692016                 push    offset asc_6920E0 ; "  "
  10. .text:0069201B                 call    sub_68DA00
  11. .text:00692020                 lea     ecx, [ebp+var_10]
  12. .text:00692023                 mov     edx, offset aCaption_trial ; "CAPTION_Trial"
  13. .text:00692028                 call    sub_68F824
  14. .text:0069202D                 push    [ebp+var_10]
  15. .text:00692030                 lea     eax, [ebp+var_8]
  16. .text:00692033                 mov     edx, 3
  17. .text:00692038                 call    sub_407F90
В принципе, ничего необычного. Проверяется байт, отвечающий за зарегистрированность, затем выполняется или не выполняется условный переход. А что если превратить проверку в инициализацию?

Патчим файл
Патчим файл

Мы заменили проверку CMP на команду MOV, а условный переход поменяли на безусловный. Сохраняем изменения, запускаем программу.

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

Наг-окно пропало, пункты покупки и регистрации в меню стали неактивными, плашка с напоминанием о покупке пропала, триальная надпись в заголовке окна тоже. Если создать новый проект и пройти все шаги до сохранения изображения, то и там никаких ограничений тоже не будет. Цель достигнута. Несколько дней до следующего релиза можно заняться другими делами.

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

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

Комментарии

Отзывы посетителей сайта о статье
xussr (03.06.2017 в 09:22):
Все не совсем так это не убирает проверки на валидность а только надпись триаль вот здесь то самое
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 и нопим условный переход
Alex (31.05.2017 в 14:41):
Пока блокирую фаерволом этот IP
Соединение по TCP
Спасибо за совет.
Будем пробовать.
ManHunter (31.05.2017 в 14:02):
Поискать вызовы соответствующих функций, поискать фрагменты строк типа "http" или имени сервера, а также места, где эти строки используются. Вариантов много.
Alex (31.05.2017 в 13:51):
Приветствую.
ЦитатаПри попытке ввода серийника выясняется, что программа активируется через интернет на своем сервере.

Смотрю тут одну программку.
При старте прога лезет на сервак проверяться.
Если её не пустить в начале, то программа работает в Pro
В теле зашиты серийники.
Регистрирую одним из них, всё Ок.
Но видать они уже забанены.
И вот вопрос:
Как узнать код откуда она лезет на сервак проверяться?
brute (18.05.2017 в 13:51):
Спасибо! Попробую отыскать динозавра с ХП..
ManHunter (18.05.2017 в 12:14):
ЦитатаТо есть, если бы мы не нашли строку "CAPTION_Trial" и ссылки на неё, то, имхо, с поиском других строк и ссылок на них, а также с реверсом процедури проверки  были бы проблемы.

Ну ведь нашли же. Если бы не нашли, то статья была бы другой. Поиск строк в памяти и бряки на чтение/запись под отладчиком никто не отменял.

ЦитатаЕсть ли какие-нибудь "советы" по снятию последних армадилы и аспра?

_Физическая_ машина с 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.)
Второй вопрос особенно актуальный, так как половина "интересного" платного софта накрыта армой/аспром.

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

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

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