Blog. Just Blog

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

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

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

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

При попытке восстановить удаленные данные или при выборе регистрации через меню появляется окно ввода электронной почты и серийника. На ввод левых данных программа реагирует следующим сообщением.

Сообщение о неправильной регистрации
Сообщение о неправильной регистрации

Программа поддерживает многоязычный интерфейс, строка сообщения обнаруживается в языковом файле English.ini. Как видите, ей соответствует индекс MSG1004. Вот его и поищем в дизассемблерном листинге.

Строка сообщения в языковом файле
Строка сообщения в языковом файле

Поиском по строке обнаружится следующий код. Сперва выполняется какая-то проверка, если она вернула EAX=0, то выводится сообщение о неправильной регистрации.
  1. .text:00452FD8                 call    sub_453390
  2. .text:00452FDD                 mov     bl, 10h
  3. .text:00452FDF                 mov     byte ptr [esp+8FCh+var_4], bl
  4. .text:00452FE6                 mov     edi, [esp+8FCh+var_8EC]
  5. ; Вызвать функцию проверки
  6. .text:00452FEA                 call    sub_4339B0
  7. .text:00452FEF                 test    eax, eax
  8. ; Если она вернула EAX=0, то вывести сообщение о неправильной регистрации
  9. .text:00452FF1                 jz      loc_4531A0
  10. .text:00452FF7                 mov     ebx, [esp+8FCh+ThreadId]
  11. .text:00452FFB                 mov     ecx, ebx
  12. .text:00452FFD                 call    sub_433200
  13. ...
  14. ...
  15. .text:004531A0 loc_4531A0:
  16. .text:004531A0                 lea     edx, [esp+8FCh+var_450]
  17. .text:004531A7                 push    edx
  18. .text:004531A8                 call    sub_44D240
  19. .text:004531AD                 mov     eax, offset aMsg1004 ; "MSG1004"
  20. .text:004531B2                 lea     ecx, [esp+8FCh+var_838]
  21. .text:004531B9                 mov     byte ptr [esp+8FCh+var_4], 13h
  22. .text:004531C1                 call    sub_409770
  23. .text:004531C6                 mov     esi, [esp+8FCh+var_8E0]
Давайте посмотрим на функцию проверки. Она небольшая, код чистый и понятный.
  1. .text:004339B0 sub_4339B0      proc near
  2. .text:004339B0                 xor     eax, eax
  3. .text:004339B2                 mov     edx, offset a2z3zo3myezyxed
  4. ; "2z3zO3MyezyXedo3y4Q6DNKh76p8cn"
  5. .text:004339B7                 mov     ecx, edi
  6. .text:004339B9                 push    esi
  7. .text:004339BA                 lea     ebx, [ebx+0]
  8. .text:004339C0 loc_4339C0:
  9. .text:004339C0                 mov     si, [ecx]
  10. .text:004339C3                 cmp     si, [edx]
  11. .text:004339C6                 jnz     short loc_4339E6
  12. .text:004339C8                 test    si, si
  13. .text:004339CB                 jz      short loc_4339E2
  14. .text:004339CD                 mov     si, [ecx+2]
  15. .text:004339D1                 cmp     si, [edx+2]
  16. .text:004339D5                 jnz     short loc_4339E6
  17. .text:004339D7                 add     ecx, 4
  18. .text:004339DA                 add     edx, 4
  19. .text:004339DD                 test    si, si
  20. .text:004339E0                 jnz     short loc_4339C0
  21. .text:004339E2 loc_4339E2:
  22. .text:004339E2                 xor     ecx, ecx
  23. .text:004339E4                 jmp     short loc_4339EB
  24. .text:004339E6 ; ---------------------------------------
  25. .text:004339E6 loc_4339E6:
  26. .text:004339E6                 sbb     ecx, ecx
  27. .text:004339E8                 sbb     ecx, 0FFFFFFFFh
  28. .text:004339EB loc_4339EB:
  29. .text:004339EB                 test    ecx, ecx
  30. .text:004339ED                 jz      short loc_433A25
  31. .text:004339EF                 mov     edx, offset aBedlztagiozavo
  32. ; "BeDLZtagIOZAvosQtghorfNcbfdgPm"
  33. .text:004339F4                 mov     ecx, edi
  34. .text:004339F6 loc_4339F6:
Что тут происходит? Выполняются два сравнения введенного серийника сперва со строчкой "2z3zO3MyezyXedo3y4Q6DNKh76p8cn", а затем с "BeDLZtagIOZAvosQtghorfNcbfdgPm". Адрес почты при регистрации не используется, достаточно только, чтобы он был записан в более-менее похожем формате. Таким образом, у нас есть два валидных серийных номера, они же и единственные серийники для регистрации.

А вот если посмотреть на строчки, которые задействуются в случае корректной регистрации, то там обнаружится следующее:
  1. .rdata:004EBA20 aSmtp_163_com   db 'smtp.163.com',0
  2. .rdata:004EBA2D                 align 10h
  3. .rdata:004EBA30 aFilerecovery@1 db 'fileRecovery@163.com',0
  4. .rdata:004EBA45                 align 4
  5. .rdata:004EBA48 aLouis19841027  db 'louis19841027',0
  6. .rdata:004EBA56                 align 4
  7. .rdata:004EBA58 aEDataRecovery  db 'E Data Recovery',0
  8. .rdata:004EBA68 a5_2_0EDataReco db '5.2.0 E Data Recovery Registration',0
  9. .rdata:004EBA8B                 align 4
  10. .rdata:004EBA8C aTheBatV3_02Pro db 'The Bat! (v3.02) Professional',0
Кто еще не понял, я поясню. В случае успешной регистрации автору отправляется электронное письмо, причем в коде в открытом виде прописан SMTP-сервер, почтовый ящик (он же логин) и пароль. А в пароле имя и дата рождения. Луи, ну ептваюмать... Пошлите ему кто-нибудь открытку с поздравлением 27 октября.

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

Ладно, нажимаем кнопку регистрации, в поля ввода вводим любой email, в поле серийника любой из двух указанных выше. Программа благодарит за регистрацию, из интерфейса исчезают кнопки и пункты меню покупки и регистрации. Ограничения при восстановлении удаленных данных тоже исчезают. Цель достигнута. Остальные выводы сделаете сами.

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

Комментарии

Отзывы посетителей сайта о статье
daxx0r (20.12.2020 в 14:12):
Именно. Размалеванная платная обертка над ffmpeg.
ManHunter (20.12.2020 в 01:52):
Скорее всего, что на паблик доступны готовые компоненты с примерно нулевым уровнем вхождения, типа convert('avi','mp4'). Отсюда и такое обилие ужа-в-ежа-конвертеров, достаточно только налячкать мало-мальский интерфейс для выбора файлов и кнопкой "Конвертировать". Ну и с регистрацией за стопицот золотых дукатов, конечно.
daxx0r (17.12.2020 в 03:05):
Программ для восстановления данных развелось как грязи.
Такое ощущение, что все начинающие погромисты учатся по одному учебнику, в котором одно из заданий - написать свою дата рекавери прогу.
То же самое и про аудио-видео конвертеры)

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

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

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