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. После ввода любого из них никаких сообщений о неправильной регистрации не появится. После перезапуска программы пункты меню, относящиеся к регистрации, станут неактивными. Цель достигнута.

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

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

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 1426 | Комментариев: 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-2018
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0053 сек.) / Память: 4.75 Mb
Наверх