Blog. Just Blog

Исследование защиты Photo Mishmash Screensaver

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

Софт из старых запасов. Photo Mishmash Screensaver - простенький хранитель экрана, который накидывает на рабочий стол изображения из выбранной папки, а затем всячески их деформирует. Не шедевр, конечно, но для разнообразия сойдет. Офсайта давно уже нет, скачать дистрибутив негде, поэтому ковыряться во внутренностях можно со спокойной совестью.

Забираем с файлобменника дистрибутив, устанавливаем, смотрим что и как. В окне настроек отображается информация об оставшемся пробном периоде. Но вот ни полей ввода регистрационных данных, ни чего-то подобного в интерфейсе нет.

Окно настроек
Окно настроек

Больше ничего интересного нет. Исполняемый файл ничем не упакован, отправляем его в дизассемблер. У меня он разобрал файл быстрее, чем я напечатал этот абзац. Поищем в листинге строчку сообщения о триальном периоде, а также условие, при котором она появляется.
  1. .text:004121FA                 lea     ecx, [ebp+var_14]
  2. .text:004121FD                 call    sub_4219E0
  3. .text:00412202                 mov     byte ptr [ebp+var_4], 4
  4. .text:00412206                 lea     ecx, [ebp+var_14]
  5. ; Вызвать функцию проверки
  6. .text:00412209                 call    sub_421EC5
  7. ; Если она вернула EAX=0, то скринсейвер не зарегистрирован
  8. .text:0041220E                 test    eax, eax
  9. .text:00412210                 jz      loc_412340
  10. .text:00412216                 lea     ecx, [ebp+var_14]
  11. .text:00412219                 call    ?GetLocaleT@_LocaleUpdate
  12. .text:0041221E                 push    eax
  13. .text:0041221F                 push    offset aIsRegisteredTo
  14. ; " is registered to:\r\n"
  15. .text:00412224                 lea     ecx, [ebp+var_18]
  16. .text:00412227                 call    sub_467788
  17. .text:0041222C                 mov     [ebp+var_50], eax
  18. .text:0041222F                 mov     ecx, [ebp+var_50]
  19. .text:00412232                 mov     [ebp+var_54], ecx
  20. .text:00412235                 mov     byte ptr [ebp+var_4], 5
  21. .text:00412239                 mov     edx, [ebp+var_54]
  22. .text:0041223C                 push    edx
  23. ...
  24. ...
  25. ...
  26. .text:00412331                 mov     edx, [ebp+var_4C]
  27. .text:00412334                 mov     byte ptr [edx+94h], 0
  28. .text:0041233B                 jmp     loc_4124DD
  29. .text:00412340 ; ------------------------------------------------
  30. .text:00412340 loc_412340:
  31. .text:00412340                 lea     eax, [ebp+var_30]
  32. .text:00412343                 push    eax
  33. .text:00412344                 call    sub_421EDC
  34. .text:00412349                 add     esp, 4
  35. .text:0041234C                 mov     [ebp+var_80], eax
  36. .text:0041234F                 mov     ecx, [ebp+var_80]
  37. .text:00412352                 mov     [ebp+var_84], ecx
  38. .text:00412358                 mov     byte ptr [ebp+var_4], 0Bh
  39. .text:0041235C                 mov     edx, [ebp+var_84]
  40. .text:00412362                 push    edx
  41. .text:00412363                 push    offset a_EvaluationPer
  42. ; ". Evaluation period "
  43. .text:00412368                 lea     ecx, [ebp+var_34]
  44. .text:0041236B                 call    sub_467788
  45. .text:00412370                 mov     [ebp+var_88], eax
  46. .text:00412376                 mov     eax, [ebp+var_88]
  47. .text:0041237C                 mov     [ebp+var_8C], eax
Часть кода я пропустил для наглядности, оставил только логическое ветвление. Тут у нас самая обычная проверка регистрации, по результатам которой или выводится сообщение о корректной регистрации или сообщение о пробном периоде. Посмотрим функцию проверки:
  1. .text:00421EC5 sub_421EC5      proc near
  2. .text:00421EC5                 push    ebp
  3. .text:00421EC6                 mov     ebp, esp
  4. .text:00421EC8                 sub     esp, 8
  5. .text:00421ECB                 mov     [ebp+var_8], ecx
  6. ; Принудительно обнулить результат
  7. .text:00421ECE                 mov     [ebp+var_4], 0
  8. ; Скринсейвер НИКОГДА не будет зарегистрирован
  9. .text:00421ED5                 mov     eax, [ebp+var_4]
  10. .text:00421ED8                 mov     esp, ebp
  11. .text:00421EDA                 pop     ebp
  12. .text:00421EDB                 retn
  13. .text:00421EDB sub_421EC5      endp
Тут даже не надо быть реверсером, чтобы понять суть происходящего. Результат проверки регистрации всегда будет неправильным, да и не проверяется тут, собственно, ничего, просто принудительно обнуляется переменная. Вот и раскрылась причина того, почему в интерфейсе не предусмотрена регистрация, это просто демо-версия, а полная версия высылается или скачивается после покупки. Что ж, давайте превратим демо-версию в полную. Впечатываем в начало функции по адресу 00421EC5 пару команд MOV EAX,1 и RET, сохраняем изменения.

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

Вот теперь все по красоте. В интерфейсе пропали всякие уродливые надписи и вкладки со ссылками на покупку. Перевод системного времени на месяц вперед также не нарушает работоспособность скринсейвера. Цель достигнута.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 209 | Комментариев: 0

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

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

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

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