Исследование защиты программы Photo Glamour
Скриншот программы Photo Glamour
Программа Photo Glamour предназначена для быстрого нанесения различных "гламурных" эффектов на ваши фотографии. Все делается в несколько кликов, а результат можно сразу же посмотреть в сравнении с исходным изображением. Цена на программу невелика, но все равно заметно отличается от единственно правильной нулевой цены.
Скачиваем дистрибутив, устанавливаем, запускаем. Первым же делом мы сталкиваемся с необходимостью выпускать программу в интернет, так как триальный срок хранится на сервере разработчиков, а без сети программа вообще отказывается работать.
Программа требует соединение с интернетом
После регистрации, как нас заверяют, Photo Glamour сможет работать и в автономном режиме. В интернет пускать не будем, поищем в файле что-нибудь, связанное с триалом.
Строка сообщения найдена
Ну вот, интересная строка. Так как информация о триальном сроке хранится не у нас, то рано или поздно мы получим это сообщение. Вот оно в листинге дизассемблера:
Code (Assembler) : Убрать нумерацию
- ...
- .text:00460239 mov al, [ebp+var_8]
- .text:0046023C test al, al
- .text:0046023E jnz loc_4602FA
- .text:00460244 lea edx, [ebp+var_2A0]
- .text:0046024A mov eax, offset aTrialExpired
- ; "Trial expired"
- .text:0046024F call sub_79FA90
- .text:00460254 mov edx, [ebp+var_2A0]
- ...
Code (Assembler) : Убрать нумерацию
- ...
- ; Сообщение о неправильной лицензии
- .text:0045FF97 mov [ebp+var_8], 0
- .text:0045FF9B lea edx, [ebp+var_6C]
- .text:0045FF9E mov eax, offset aNoValidLicense
- ; "No valid license installed"
- .text:0045FFA3 call sub_79FA90
- .text:0045FFA8 mov edx, [ebp+var_6C]
- .text:0045FFAB mov eax, [ebp+var_4]
- ...
- ; Похоже на поиск файла лицензии с расширением ".idlic"
- .text:00460091 call sub_4095A0
- .text:00460096 mov edx, [ebp+var_274]
- .text:0046009C mov ecx, offset a_idlic ; "*.idlic"
- .text:004600A1 lea eax, [ebp+var_270]
- .text:004600A7 call sub_408820
- .text:004600AC mov eax, [ebp+var_270]
- ...
Code (Assembler) : Убрать нумерацию
- ...
- .text:00460439 lea eax, [ebp+var_8]
- ; Вызвать функцию проверки локальной лицензии
- .text:0046043C call sub_45FF20
- .text:00460441 test al, al
- ; Если она вернула AL=0, то программа не зарегистрирована
- .text:00460443 jz short loc_46044E
- ; Занести в переменную значение 1...
- .text:00460445 mov [ebp+var_4], 1
- ; ... и упрыгать далеко за все нехорошие сообщения
- .text:00460449 jmp loc_460653
- .text:0046044E ; -----------------------------------------------
- .text:0046044E loc_46044E:
- .text:0046044E lea edx, [ebp+var_48]
- .text:00460451 mov eax, offset aTrialExpired
- ; "Trial expired"
- .text:00460456 call sub_79FA90
- .text:0046045B mov edx, [ebp+var_48]
- ...
Следующей зацепкой будет счетчик триальных дней в заголовке программы. Приметная строка, поищем ее в файле:
Строка сообщения найдена
По перекрестным ссылкам находим место в листинге, где она используется, не забывая выяснить условия ее появления:
Code (Assembler) : Убрать нумерацию
- .text:00442146 mov edx, ds:dword_13D9020
- .text:0044214C lea eax, [ebp+var_8]
- .text:0044214F call sub_40A260
- ; Вызывать функцию проверки
- .text:00442154 call sub_45FE50
- ; Если она вернула AL=0, то добавить в заголовок триальный счетчик
- .text:00442159 test al, al
- .text:0044215B jnz short loc_4421C2
- .text:0044215D mov eax, [ebp+var_8]
- .text:00442160 mov [ebp+var_3C], eax
- .text:00442163 mov eax, offset unk_C8D1E8
- .text:00442168 mov [ebp+var_38], eax
- .text:0044216B lea eax, [ebp+var_40]
- .text:0044216E push eax
- .text:0044216F mov eax, ds:dword_13D90C0
- .text:00442174 mov [ebp+var_4C], eax
- .text:00442177 mov [ebp+var_50], 0
- .text:0044217E mov eax, ds:dword_13D90B0
- .text:00442183 mov [ebp+var_44], eax
- .text:00442186 mov [ebp+var_48], 0
- .text:0044218D lea ebx, [ebp+var_50]
- .text:00442190 lea edx, [ebp+var_54]
- .text:00442193 mov eax, offset aTrialDayDOfD
- ; "trial day %d of %d"
- .text:00442198 call sub_79FA90
- .text:0044219D mov eax, [ebp+var_54]
- .text:004421A0 mov ecx, 1
- .text:004421A5 mov edx, ebx
- .text:004421A7 call sub_48B220
- .text:004421AC mov eax, [ebp+var_40]
- .text:004421AF mov [ebp+var_34], eax
- .text:004421B2 lea edx, [ebp+var_3C]
- .text:004421B5 lea eax, [ebp+var_8]
- ...
Code (Assembler) : Убрать нумерацию
- .text:008A5320 push ebp
- .text:008A5321 mov ebp, esp
- .text:008A5323 sub esp, 4Ch
- .text:008A5326 mov [ebp+var_4C], ebx
- .text:008A5329 mov [ebp+var_4], eax
- .text:008A532C mov [ebp+var_48], 0
- .text:008A5333 mov [ebp+var_44], 0
- .text:008A533A lea eax, [ebp+var_40]
- .text:008A533D call sub_40F1B0
- .text:008A5342 mov [ebp+var_30], 0
- .text:008A5349 lea ecx, [ebp+var_10]
- .text:008A534C lea edx, [ebp+var_28]
- .text:008A534F mov eax, 1
- .text:008A5354 call sub_40EAC0
- .text:008A5359 call sub_4111B0
- .text:008A535E push eax
- .text:008A535F test eax, eax
- .text:008A5361 jnz short loc_8A53D0
- .text:008A5363 lea edx, [ebp+var_30]
- .text:008A5366 mov eax, offset aDuringThisTria
- ; "During this trial, an internet connecti"...
- .text:008A536B call sub_79FA90
- .text:008A5370 mov edx, [ebp+var_30]
- .text:008A5373 mov eax, [ebp+var_4]
- .text:008A5376 add eax, 8
- .text:008A5379 call sub_40A260
- .text:008A537E push 2
- .text:008A5380 lea eax, [ebp+var_30]
- .text:008A5383 call sub_409FB0
- .text:008A5388 lea edx, [ebp+var_44]
- .text:008A538B mov eax, offset aPleaseConnec_0
- ; "Please connect to the internet and try "...
- .text:008A5390 call sub_79FA90
- .text:008A5395 mov ebx, [ebp+var_44]
- .text:008A5398 lea edx, [ebp+var_48]
- .text:008A539B mov eax, offset aSomethingWentW
- ; "Something went wrong while trying to qu"...
- .text:008A53A0 call sub_79FA90
- .text:008A53A5 mov edx, [ebp+var_48]
- ...
Просмотров: 5364 | Комментариев: 14
Метки: исследование защиты, графика
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(20.11.2013 в 22:25):
Главное, ребята, перцем не стареть!
Never
(20.11.2013 в 22:16):
"Это Саша Грей ;) " - на молодую аудиторию метишь?! В нашем с тобой возрасте надо Джену Джеймсон ставить )))
ChVL
(13.11.2013 в 00:38):
Прошу прощения. В HEX редакторе делал Find Text, занялся подменой и совсем вылетело из головы, что надо ещё воспользоваться Simultaneous Search. Там эта строка есть, и вместо unregistered можно вписать всё, что угодно.
ChVL
(12.11.2013 в 19:42):
У меня не получилось. Более того, там есть два указателя: Registered - BA 00 0C 31 01 и Unregistered - BA 20 0C 31 01, так подмена (во многих случаях обычно проблему решает) здесь почему-то не срабатывает.
ManHunter
(12.11.2013 в 09:05):
Подсказываю: можно перенаправить указатель со строки Unregistered на какую-нибудь другую ненужную строку, а потом поменять эту другую строку.
ChVL
(12.11.2013 в 08:36):
В окне About строку Unregistered можно только убрать, а вот заменить её на себя любимого, ну, никак не удастся...
brute
(21.10.2013 в 06:21):
можно заменить всего один байт по адресу 006ED5CF.. Сообщение о триале осталось, но всё работает. Кста, программа сильно виснет на "сложных" абстакциях фрактального типа.
Никита
(18.10.2013 в 15:11):
Нашли на ком потренироваться )))))))))
AyTkACT
(10.10.2013 в 22:06):
ManHunter, тьфу ты. Срамота! :-D
ManHunter
(10.10.2013 в 21:58):
Это Саша Грей ;)
AyTkACT
(10.10.2013 в 21:56):
ManHunter, знакомая фотомордочка на скринах. Где-то когда-то видел. Куда копать?
Grey
(10.10.2013 в 16:12):
Раньше не задумывался что "исследование" относительно несложное мероприятие (с точки зрения "доступа к телу"). Раньше в эту ветку я просто заглядывал. Теперь заинтересовался, достаточно "спортивная" вещь. Конечно даже этот уровень для меня выше моих возможностей, по "твоим стопам" вроде все просто", постороннюю вещицу возьмешь - жесть. Спасибо за интересные статьи.
ManHunter
(10.10.2013 в 14:19):
Гораздо меньше, чем на написание статьи. На защиту такого уровня обычно уходит минут 5-10, на статью уходит 1-2 часа. Конкретно для этой программы есть еще парочка более шустрых и эффективных вариантов патчей, но они "не очевидные", я просто не смогу объяснить как я до них добрался.
Grey
(10.10.2013 в 14:16):
Интересно сколько "чистого времени" ты тратишь на такую гололомку?
Добавить комментарий
Заполните форму для добавления комментария