Исследование защиты программы Zoom Photo Screensaver
Скриншот программы Zoom Photo Screensaver
Скринсейвер Zoom Photo Screensaver представляет собой слайдшоу из ваших фотографий, которые меняются с эффектом "Pan and Zoom". Это небольшое приближение фотографии относительно центра, в результате, как написано на офсайте, получается эффект просмотра кино. Ничего сверхъестественного, но даже за такую ерунду почему-то надо выложить почти двадцатку баксов.
Скачиваем дистрибутив, устанавливаем, сразу же открывается окно настроек хранителя экрана. Из явных признаков в триальном режиме присутствуют соответствующие надписи в заголовке и во вкладке "About". По окончанию триального срока скринсейвер не запускается, сразу же выводя требование о регистрации.
Скринсейвер в триальном режме
Посмотрим, от чего лучше оттолкнуться в исследованиях. В ресурсах никаких диалоговых окон и текстовых строк нет, зато в самом коде есть:
Строки сообщений о триале и регистрации
А вот как этот блок выглядит в дизассемблере.
Code (Assembler) : Убрать нумерацию
- .data:0045FB24 off_45FB24 dd offset aYouAreUsingThe
- ; "You are using the trial version\r\n"
- .data:0045FB28 db 0FFh
- .data:0045FB29 db 0FFh
- .data:0045FB2A db 0FFh
- .data:0045FB2B db 0FFh
- .data:0045FB2C db 21h ; !
- .data:0045FB2D db 0
- .data:0045FB2E db 0
- .data:0045FB2F db 0
- .data:0045FB30 aYouAreUsingThe db 'You are using the trial version',0Dh,0Ah,0
Code (Assembler) : Убрать нумерацию
- ; Проверить DWORD
- .text:00418E5E mov eax, dword_461370
- .text:00418E63 test eax, eax
- ; Если он не равен нулю, то перепрыгнуть дальше
- .text:00418E65 jnz short loc_418ECC
- .text:00418E67 lea eax, [ebp+var_14]
- .text:00418E6A call sub_403340
- ; Ссылка на указатель на строку "You are using the trial version"
- .text:00418E6F mov eax, off_45FB24
- .text:00418E74 mov [ebp+var_14], eax
- .text:00418E77 push 0CEh
- .text:00418E7C mov eax, ds:dword_4732A8
- .text:00418E81 sub eax, 20h
- .text:00418E84 add eax, 82h
- .text:00418E89 push eax
- ...
Ссылки на DWORD регистрации
Теперь поищем место, где этот флаг инициализируется. По перекрестным ссылкам выходим на следующий код:
Code (Assembler) : Убрать нумерацию
- .text:0045BEB1 movzx eax, ds:byte_474DF0
- .text:0045BEB8 mov dword_461370, eax
Ссылки на BYTE регистрации
Code (Assembler) : Убрать нумерацию
- ; Вызвать какую-то функцию
- .text:0045B488 lea edx, unk_465BE0[eax]
- .text:0045B48E lea eax, [ebp+var_18]
- .text:0045B491 call sub_435D80
- ; Сохранить во временной переменной ее результат
- .text:0045B496 mov [ebp+var_66C], al
- .text:0045B49C inc ebx
- .text:0045B49D loc_45B49D:
- ; Временная переменная не равна нулю?
- .text:0045B49D mov al, [ebp+var_66C]
- .text:0045B4A3 test al, al
- ; Да, переход
- .text:0045B4A5 jnz short loc_45B4B3
- .text:0045B4A7 cmp ebx, 0C7h
- .text:0045B4AD jle loc_45B3B4
- .text:0045B4B3 loc_45B4B3:
- ; Временная переменная не равна нулю?
- .text:0045B4B3 mov al, [ebp+var_66C]
- .text:0045B4B9 test al, al
- .text:0045B4BB jz loc_45B552
- ; Да, инициализировать байт единичкой
- .text:0045B4C1 mov ds:byte_474DF0, 1
Окно регистрации
Но не тут-то было. Часто срабатывающий трюк со сравнением введенного серийника и правильного серийника тут не прокатывает, сравниваются бинарные значения, причем одно значение остается постоянным, а второе в цикле меняется. Но такая ситуация нам уже встречалась ранее: от введенного серийника считается какой-либо хеш, а затем он сравнивается поочередно со списком хешей, хранимым в самой программе. Не зная даже формата серийного номера, восстановление исходной строки по хешу может быть выполнено только прямым перебором, который запросто займет месяцы и годы. Поэтому красивого решения с кейгенами и серийниками не получится, воспользуемся старым добрым патчем. В начало функции сравнения по адресу 00435D80 запишем команды MOV AL,1 и RET. Теперь при любом раскладе байт регистрации будет взводиться в правильное значение. Сохраняем изменения, повторяем регистрацию:
Программа успешно "зарегистрирована"
Скринсейвер принимает любой серийный номер и любое регистрационное имя, ограничения по времени работы исчезли вместе с кнопкой регистрации и текстом в заголовке окна. Цель достигнута.
Просмотров: 5155 | Комментариев: 17
Метки: исследование защиты
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
SHREEF
(31.01.2015 в 21:38):
Как всегда на высоте , ManHunter! так держать!!!!!
brute
(21.01.2015 в 17:30):
чтобы поставить точку, сделал портабельную версию по методу ManHunter'a (запустить reg-файл, а потом зарегить прогу любым ключом)
мой метод с патчем RegSetValueExA не работает, так как все настройки хранятся в реесте, то прога не может туда писать настройки отображения картинок, задержку и т.п. Можно, конечно, каждый раз править reg-файл, но неудобно..
мой метод с патчем RegSetValueExA не работает, так как все настройки хранятся в реесте, то прога не может туда писать настройки отображения картинок, задержку и т.п. Можно, конечно, каждый раз править reg-файл, но неудобно..
X-Wing Top Ace
(21.01.2015 в 12:52):
Дошло наконец - Doxtup из себя копираста разыгрывает. В теме про кряк Spot On The Mouse он сам высмеял такой комментарий про "из-за кряка с голоду помру" и написАл тут хохму про голодные дрова. Натурально вышло, я вот купился. ;)
Точно - вот и я купился. Потом сообразил глянуть в другую тему!
И я тоже.
Точно - вот и я купился. Потом сообразил глянуть в другую тему!
И я тоже.
Doxtup
(21.01.2015 в 12:51):
Я гляжу шутка юмора удалась )))
Ну а так переводил в гуголе - усе претензии к нему.
Насчет курил - не курю и вам не советую)
X-Wing Top Ace
(21.01.2015 в 12:46):
А это уже как в том анекдоте, где дочь НэРэ писала сочинение про бедную семью: "Жила на свете очень бедная семья. Отец был беден, мать была бедна, дети были бедны, горничная была бедна, садовник был беден, водитель был беден, вообще жила в бедности вся прислуга".
kaktustv
(21.01.2015 в 12:00):
Видимо, имелось в виду: мой водитель помрет с голодухи.
X-Wing Top Ace
(21.01.2015 в 11:16):
Кстати, одно пророчество из советского кинА. ;) Фильм "Волшебный голос Джельсомино" снимали в 1977, когда никаких кряков и торрентов еще не существовало. Однако умудрились напророчить такую фразу: "пират" будет означать "справедливый человек"!
И означает же - после того, как кряки и торренты появились! Хотя понятно, что в реале все было наоборот - копирасты решили, что "справедливый человек" будет означать "пират", так и пошло - пираты да пираты.
Голодные дрова? ;)))) Что курил этот Doxtup? ;))))
ManHunter
(18.01.2015 в 18:37):
IDA Pro. Ctrl+X на нужном адресе
Soso
(18.01.2015 в 18:31):
Подскажите пжл.::
как называется тулза для поиска перекрестных ссылок или где взять ?!?)
как называется тулза для поиска перекрестных ссылок или где взять ?!?)
ManHunter
(18.01.2015 в 14:59):
Скоро это будет локальным мемом
Doxtup
(18.01.2015 в 14:56):
Hello, I am the author of this program , please remove the article about hacking . otherwise I would not be able to buy a mozzerete , and my driver dies of hunger.
brute
(18.01.2015 в 13:11):
Чтобы прога работала всегда, надо патчить екзешник и далее распространять/хранить каталог с программой. То есть, исходный дистрибутив не подойдет, ибо рабочий ключ не подсмотреть. Дистрибутив пишет время в реестр при установке. Можно почистить реестр и запатчить функцию, которой прога пишет данные в реестр "RegSetValueExA", например, по адресу 0043A29C поменять переход на безусловный. В дальнейшем ни чистка реестра ни ввод каких-либо данных не понадобятся
brute
(18.01.2015 в 10:04):
нашёл ветки реестра, ответственные за триал. Можно раз в неделю запускать reg файл, но лучше пропатчить.
https://yadi.sk/d/8Mdn3s4fe4Skf
https://yadi.sk/d/8Mdn3s4fe4Skf
brute
(18.01.2015 в 07:33):
на XP перевод часов не помогает перевести прогу в триальный период, триал не работает. Сие наводит на мысль, что прога определяет по реестру зарегистрирована ли она. А реестр в W7 и XP не совпадают..
Игорь
(17.01.2015 в 23:15):
Отличия, как я понимаю, в конкретных адресах и надписях, а алгоритм проверки на зарегистрированность и "лечения" идентичен описанному Вами ?
ManHunter
(17.01.2015 в 19:53):
Не прямо так же, но очень похоже
Игорь
(17.01.2015 в 16:56):
Подскажите, а Photo Slideshow Screensaver от этого же производителя также лечится ?
Добавить комментарий
Заполните форму для добавления комментария