Blog. Just Blog

Исследование защиты программы Do Your Data Recovery

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

Do Your Data Recovery - утилита для быстрого восстановления удаленных или поврежденных файлов жестких дисков, карт памяти цифровых устройств и т.п. Программа также может восстановить утерянные файлы с удаленных разделов. Без регистрации восстанавливает не более 1 гигабайта файлов. Будем это исправлять.

Забираем с сайта дистрибутив, устанавливаем. Кстати, не имеет значения, какой дистрибутив качать, они все одинаковые, отличаются только названием файла. Главный исполняемый файл ничем не упакован, отправляем его на дизассемблирование.

Запускаем программу. Никаких посторонних окон при старте нет, но в заголовке окна красуется надпись "Trial". Значит где-то должны быть строки, соответствующие платным лицензиям. Давайте поищем их. В файле легко обнаруживается список всех типов, от бесплатной до технарской.

Строки в файле
Строки в файле

Вернемся в дизассемблер и посмотрим, как эти типы лицензий появляются в заголовке окна. Это делается конструкцией SWITCH-CASE на основании значения, полученного из функции проверки статуса регистрации:
  1. .text:0046EB7F                 mov     [ebp+var_4], 0
  2. .text:0046EB86                 call    sub_412B90
  3. .text:0046EB8B                 mov     ecx, eax
  4. ; Вызвать функцию проверки статуса
  5. .text:0046EB8D                 call    sub_459980
  6. ; Сохранить статус регистрации
  7. .text:0046EB92                 mov     [ebp+var_14], eax
  8. .text:0046EB95                 cmp     [ebp+var_14], 2
  9. .text:0046EB99                 jl      short loc_46EBBD
  10. .text:0046EB9B                 lea     ecx, [ebp+var_18]
  11. .text:0046EB9E                 call    sub_497870
  12. .text:0046EBA3                 mov     byte ptr [ebp+var_4], 1
  13. .text:0046EBA7                 push    1
  14. .text:0046EBA9                 lea     ecx, [ebp+var_18]
  15. .text:0046EBAC                 call    sub_497AD0
  16. .text:0046EBB1                 mov     byte ptr [ebp+var_4], 0
  17. .text:0046EBB5                 lea     ecx, [ebp+var_18]
  18. .text:0046EBB8                 call    sub_497890
  19. .text:0046EBBD loc_46EBBD:
  20. ; Статус регистрации программы
  21. .text:0046EBBD                 mov     ecx, [ebp+var_14]
  22. .text:0046EBC0                 mov     [ebp+var_134], ecx
  23. .text:0046EBC6                 cmp     [ebp+var_134], 5 ; switch 6 cases
  24. .text:0046EBCD                 ja      short loc_46EC3A ; default
  25. .text:0046EBCF                 mov     edx, [ebp+var_134]
  26. .text:0046EBD5                 jmp     ds:off_46F1D8[edx*4] ; switch jump
  27. .text:0046EBDC loc_46EBDC:
  28. .text:0046EBDC                 push    offset aFree
  29. ; jumptable 0046EBD5 case 0
  30. .text:0046EBE1                 lea     ecx, [ebp+var_10]
  31. .text:0046EBE4                 call    ds:mfc90_945
  32. .text:0046EBEA                 jmp     short loc_46EC3A ; default
  33. .text:0046EBEC ; ---------------------------------------
  34. .text:0046EBEC loc_46EBEC:
  35. .text:0046EBEC                 push    offset aTrial
  36. ; jumptable 0046EBD5 case 1
  37. .text:0046EBF1                 lea     ecx, [ebp+var_10]
  38. .text:0046EBF4                 call    ds:mfc90_945
  39. .text:0046EBFA                 jmp     short loc_46EC3A ; default
  40. .text:0046EBFC ; ---------------------------------------
  41. .text:0046EBFC loc_46EBFC:
  42. .text:0046EBFC                 push    offset aProfessional_2
  43. ; jumptable 0046EBD5 case 2
  44. .text:0046EC01                 lea     ecx, [ebp+var_10]
  45. .text:0046EC04                 call    ds:mfc90_945
  46. .text:0046EC0A                 jmp     short loc_46EC3A ; default
  47. .text:0046EC0C ; ---------------------------------------
  48. .text:0046EC0C loc_46EC0C:
  49. .text:0046EC0C                 push    offset aTechnician
  50. ; jumptable 0046EBD5 case 3
  51. .text:0046EC11                 lea     ecx, [ebp+var_10]
  52. .text:0046EC14                 call    ds:mfc90_945
  53. .text:0046EC1A                 jmp     short loc_46EC3A ; default
Значение 1 соответствует триальной лицензии, 2 - профессиональная, 3 - технарская, ну и так далее. Давайте посмотрим на функцию проверки:
  1. .text:00459980 sub_459980      proc near
  2. .text:00459980                 push    ebp
  3. .text:00459981                 mov     ebp, esp
  4. .text:00459983                 push    ecx
  5. .text:00459984                 mov     [ebp+var_4], ecx
  6. .text:00459987                 call    sub_494EF0
  7. .text:0045998C                 mov     ecx, eax
  8. .text:0045998E                 call    sub_4959F0
  9. .text:00459993                 mov     esp, ebp
  10. .text:00459995                 pop     ebp
  11. .text:00459996                 retn
  12. .text:00459996 sub_459980      endp
Она совсем короткая, но вызывается из приличного количества мест, значит с большой вероятностью именно она отвечает за функционал триальной или платной версии программы. Если посмотреть на вызовы, которые выполняются в этой функции, то там обнаружится работа с файлами конфигурации, из которых считывается серийник, причем эти вызовы больше нигде не используются, то есть больше никаких проверок лицензии кроме этой быть не должно. Как мы помним, технарской лицензии соответствует значение 3, значит пропатчим начало функции командами MOV EAX,3 и RET. Сохраняем изменения.

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

В заголовке главного окна и в окне "О программе" красуется надпись "Technicial", то есть макксимально доступная лицензия. В файле есть еще строки статуса лицензии "Enterprise" и "AdvancedPE", они также есть в блоке SWITCH-CASE, но на сайте про них ни слова. Так что ограничимся технарской лицензией. Проверяем восстановление, никаких ограничений по объему сохраняемых данных нет. Цель достигнута.

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

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

Комментарии

Отзывы посетителей сайта о статье
xussr (23.08.2019 в 21:46):
Все енто 64 бита а значит ольга не помошник хотя на сайте производителя этого дермософта есть как рас чистые 32 битные продукты которые с радостью ковыряются в ольге как и в прочем другом кроме примеров ассемблере

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

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

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