Blog. Just Blog

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

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

С помощью программы VideoGet вы сможете скачать ваши любимые видео клипы с сайта YouTube, а также с более чем 850 других видео веб-сайтов. VideoGet поддерживает такие сайты как: YouTube, MySpace, Google Video, Yahoo Video, MetaCafe. Многие из этих веб-сайтов держат видео в FLV формате, и большинство людей не знает как проигрывать эти файлы. VideoGet также позволит вам конвертировать все видео в множество популярных форматов для более комфортного проигрывания. VideoGet поддерживает AVI, MPEG1, MPEG2, WMV, FLV, MP4, 3GP, MP3 форматы, так что вы имеете возможность не только посмотреть видео на своем компьютере, но и переписать его на свой iPod, мобильный телефон или любой другой портативный прибор. Кроме того вы самостоятельно можете задавать настройки конвертации. Бесплатная версия позволяет скачать только 20 видео с любого сайта с момента инсталляции программы, это, конечно же, очень мало.

Скачиваем дистрибутив, устанавливаем, запускаем. Из триальных признаков сразу бросается в глаза надпись в заголовке "Trial version (20 downloads left)", а на ввод неправильного регистрационного ключа VideoGet реагирует сообщением "License key is incorrect". Поиски строки в исполняемом файле ничего не дают. Где же она может быть? Посмотрим внимательно на содержимое каталога с установленной программой. В подпапке Lang содержатся языковые файлы, среди которых есть English.xml. Попробуем поискать строку в нем. Вот она:

<String name="cSKeyInvalid">License key is incorrect</String>

Аналогичная строка есть и в других языковых файлах. Общее у них только название индекса - cSKeyInvalid, значит программа по нему и выбирает нужную строку для заполнения интерфейса. Вот этот индекс и поищем в исполняемом файле. Долго искать не пришлось:

Нехорошая строка найдена
Нехорошая строка найдена

Переходим к нашему любимому дизассемблеру. Поищем ссылки на строку и определим условия срабатывания триальной ветки алгоритма в программе.
  1. ...
  2. CODE:006CB22A                 call    sub_6CADA4
  3. CODE:006CB22F                 mov     eax, [ebp+var_4]
  4. ; Вызвать процедуру проверки регистрационного ключа
  5. CODE:006CB232                 call    sub_6C5B28
  6. ; Если она вернула AL=0, то ключ неправильный
  7. CODE:006CB237                 test    al, al
  8. CODE:006CB239                 jz      short loc_6CB29F
  9. ; Сохранить регистрационные данные и поблагодарить за регистрацию
  10. CODE:006CB23B                 mov     eax, [ebp+var_4]
  11. CODE:006CB23E                 push    eax
  12. CODE:006CB23F                 mov     edx, ds:off_70414C
  13. CODE:006CB245                 mov     edx, [edx]
  14. CODE:006CB247                 mov     ecx, offset aLickey_0 ; "LicKey"
  15. CODE:006CB24C                 mov     eax, 80000001h
  16. CODE:006CB251                 call    sub_656A50
  17. CODE:006CB256                 mov     eax, [ebp+var_4]
  18. CODE:006CB259                 push    eax
  19. CODE:006CB25A                 mov     edx, ds:off_70414C
  20. CODE:006CB260                 mov     edx, [edx]
  21. CODE:006CB262                 mov     ecx, offset aLickey_0 ; "LicKey"
  22. CODE:006CB267                 mov     eax, 80000002h
  23. CODE:006CB26C                 call    sub_656A50
  24. CODE:006CB271                 mov     eax, ds:off_703F4C
  25. CODE:006CB276                 mov     eax, [eax]
  26. CODE:006CB278                 call    sub_6C6170
  27. CODE:006CB27D                 push    0
  28. CODE:006CB27F                 lea     edx, [ebp+var_C]
  29. ; Сообщение "Thank you for registering our product"
  30. CODE:006CB282                 mov     eax, offset aCskeyvalid ; "cSKeyValid"
  31. CODE:006CB287                 call    sub_634B80
  32. CODE:006CB28C                 mov     eax, [ebp+var_C]
  33. CODE:006CB28F                 mov     cx, word_6CB324
  34. CODE:006CB296                 mov     dl, 2
  35. CODE:006CB298                 call    sub_43B448
  36. CODE:006CB29D                 jmp     short loc_6CB2C7
  37. CODE:006CB29F ; -------------------------------------------
  38. ; Триальная ветка алгоритма
  39. CODE:006CB29F loc_6CB29F:
  40. CODE:006CB29F                 push    0
  41. CODE:006CB2A1                 lea     edx, [ebp+var_10]
  42. ; Сообщение "License key is incorrect"
  43. CODE:006CB2A4                 mov     eax, offset aCskeyinvalid ; "cSKeyInvalid"
  44. CODE:006CB2A9                 call    sub_634B80
  45. CODE:006CB2AE                 mov     eax, [ebp+var_10]
  46. CODE:006CB2B1                 mov     cx, word_6CB324
  47. CODE:006CB2B8                 xor     edx, edx
  48. CODE:006CB2BA                 call    sub_43B448
  49. CODE:006CB2BF                 xor     eax, eax
  50. CODE:006CB2C1                 mov     [ebx+24Ch], eax
  51. ...
Для любителей вопрошать про кейгены: введенный ключ хэшируется и уже в таком виде сверяется с несколькими заранее предустановленными хэшами. Поэтому прибегнем к старому проверенному патчингу. Заменим начало функции проверки ключа по адресу 006C5B28 на пару команд MOV AL,1; RET. Сохраняем изменения, запускаем. Триальная надпись в заголовке программы и прочие внешние признаки триальности пропали, в диалоге "О программе" также написано, что она зарегистрирована.

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

Можно попробовать функционал, ограничения на количество загружаемых файлов также нет. Цель достигнута, деньги сэкономлены. По такой же схеме обходится защита и других продуктов от компании Nuclear Coffee.

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

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

Комментарии

Отзывы посетителей сайта о статье
xussr (12.12.2017 в 07:39):
Чегото совсем все не так как тут в статье
007FD201:  8BC3                  mov eax, ebx                          007FD201:  B001                  mov al,1
Isaev (17.07.2010 в 23:20):
Почему я не удивлён? :)))
Ну тут конечно отмазка везкая! Я сначала глянул, прежде чем читать, и как увидел белый список на 2710 хешей сразу понял суть статьи :)
67К зелёных рубанули ребята а работы на пару недель...

а там 10000... ну это тогда они про запас просто кинули :)
ManHunter (15.07.2010 в 01:30):
Можно и так, я уже описывал подобный метод с подменой хэша.
Дмитрий (15.07.2010 в 01:27):
А я просто подменил md5 на свой, и регю ключом )

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

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

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