Blog. Just Blog

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

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

Графический редактор Photo to Cartoon позволяет преобразовать любую фотографию в рисунок. Все действия выполняются буквально за несколько движений мышью. Идея таких эффектов не нова, в интернете существует немало программ с подобным функционалом, так что Photo to Cartoon мне интересна исключительно с исследовательской точки зрения.

Скачиваем дистрибутив, устанавливаем, смотрим. На офсайте написано, что для работы программы требуется .NET Framework, значит и инструменты для исследования потребуются соответствующие. У меня это ILSpy. Исполняемый файл ничем не накрыт и не обфусцирован, сразу отправляем его на анализ.

Окно регистрации программы
Окно регистрации программы

Серийный номер состоит из трех групп символов. Это полезная информация, она нам в дальнейшем понадобится.

Функция проверки серийного номера
Функция проверки серийного номера

Переходим к анализу сборки. В списке классов обнаруживается один с очень характерным названием "License". Развернув его, мы обнаруживаем метод с еще более характерным названием "Check Code", который принимает три строковых параметра и возвращает true или false. Три группы символов в серийнике, три параметра на проверку, "говорящее" название функции - это означает, что надо осмотреть тут все поподробнее.

Алгоритм проверки серийного номера
Алгоритм проверки серийного номера

А вот и алгоритм проверки серийного номера. Три группы строк преобразуются в числовые значения, затем выполняется следующая проверка. Каждое полученное число нацело делится на одну из переменных, обозначенных как "License.Key1", "License.Key2" и "License.Key3", остаток от каждого деления должен равняться 57.

Анализ переменной
Анализ переменной

Теперь надо посмотреть, где эти переменные инициализируются. Через меню "Analyze" определяем все места в сборке, где эти переменные задействуются на чтение и присвоение значений. Нас интересует именно присвоение значений, такое место только одно. Переходим на него, смотрим.

Инициализация переменных
Инициализация переменных

Это значения 73, 75 и 77. Алгоритм проверки мы знаем, значения делителей и ожидаемые значения остатков от деления тоже. Чтобы не возиться с калькулятором, вот пара серийников, числа в которых удовлетворяют этому условию: 7357-7557-7757, 0057-0057-0057. После ввода любого из них никаких сообщений о неправильной регистрации не появится. После перезапуска программы пункты меню, относящиеся к регистрации, станут неактивными. Цель достигнута.

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

Вот такая несложная защита. Генератор серийников теперь написать не проблема, вы можете сделать это самостоятельно.

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

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

Комментарии

Отзывы посетителей сайта о статье
ManHunter (26.10.2017 в 14:04):
Цитатаможно ли и эту дорогу найти при исследовании именно IlSpy?

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

Листинг из ida, подсветка моя.
egorus2010 (26.10.2017 в 14:03):
Ну да, это здесь работает, а раздел появляется после регистрации.
Но SpyStudio как раз и пишет, что прога ищет в реестре.
Я проверил - перестановил и зарегил заново.
Я имел в виду, что можно ли и эту дорогу найти при исследовании именно IlSpy?

И раз Вы здесь - у вас красивые листинги часто мелькают - это Ида?

И я правильно понял (по своему мизерному опыту), прежде чем учить Ассемблер, нужно знать устройство ОС и С++?

И спасибо за Ваши статьи!
ManHunter (26.10.2017 в 13:45):
Если это работает, то да, конечно, такой способ имеет право на жизнь.
egorus2010 (26.10.2017 в 13:35):
Подскажите, а то, что можно сделать такой рег

[HKEY_CURRENT_USER\Software\Caricature Software\Photo to Cartoon\7]
"Status"=dword:ffffffff
"Size"=dword:00000001

Если ffffffff - регистрация серая.
Если 0 - то рег сбрасывается.

Просто установка этого параметра может быть еще одним способом лома?
И виден этот путь изначально?
Бывает, SpyStidio или ProcMon прямо пишут, что за разделы или параметры прога пытается открыть и т.д.
У меня-то уровень крекерства минусовой, поэтому разъясните, пожалуйста.
MaCTeP (14.08.2017 в 15:03):
Запилил кейген для данного софта ;)

http://rgho.st/927cRgP5W
brute (09.10.2016 в 19:11):
п.с. можно также запатчить Check License, чтобы после проверки ключей реестра возвращалось true (idc.i4.1)
brute (09.10.2016 в 11:15):
пригодилась таблица значений IL-опкодов: поставил в начало метода "CheckCode" безусловный переход "Br.s 38(0060)" - прыжок на место записи в реестр в случае правильного серийника. Теперь прога регается любым ключом. (только ругнулвсь красным при сохранении - надеюсь, это не повлияло на её работоспособность:). Имхо, такой подход - прыжок на место правильной регистрации - может быть полезен во многих случаях (хотя бы для получения "правильного" слепка реестра).
speedboy (07.10.2016 в 09:59):
good
Never (29.09.2016 в 10:58):
Интересная программка. Не перестаешь ты меня удивлять/радовать софтом.
Анон (26.09.2016 в 13:46):
Куда интереснее ковырять защиту которая использует RSA и при этом всё накрыто обфускатором. Но в конечном итоге взлом сводится к подмене ключа.
X-Wing Top Ace (23.09.2016 в 11:26):
ЦитатаЗато для новичков это очень хорошая тренировка по ковырянию дотнета

Тоже верно. Так я и цитату ввернул по поводу "защиты", а не статьи.
ManHunter (23.09.2016 в 11:03):
Зато для новичков это очень хорошая тренировка по ковырянию дотнета. Инструменты поюзать, алгоритм посмотреть, кейген наваять - сразу +20 к интересу заниматься реверсингом.
X-Wing Top Ace (23.09.2016 в 10:52):
ЦитатаВот такая несложная защита.

"То, что поставили на эту дверь, даже не имело морального права называться гордым словом «замок»". ;)
Anonymous (22.09.2016 в 16:08):
ILSpector (форк ILSpy) тоже очень неплох: активно разрабатывается, разработчики русскоязычные, держат обратную связь

https://exelab.ru/f/index.php?...&topic=23387

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

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

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