Blog. Just Blog

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

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

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

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

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

Отлично, текст сообщения о неправильной регистрации у нас есть. Вернемся в листинг дизассемблера и посмотрим, где эта строка используется:
  1. .text:004046B4                 push    1
  2. .text:004046B6                 call    sub_430F5A
  3. ; Указатель на эталонную строку
  4. .text:004046BB                 mov     ecx, lpData
  5. ; Указатель на введенный серийник
  6. .text:004046C1                 mov     eax, [esi+5Ch]
  7. .text:004046C4                 push    ecx             ; char *
  8. .text:004046C5                 push    eax             ; char *
  9. ; Сравнить две строчки
  10. .text:004046C6                 call    __strcmpi
  11. .text:004046CB                 add     esp, 8
  12. .text:004046CE                 test    eax, eax
  13. .text:004046D0                 push    0               ; uType
  14. ; Строки одинаковые, регистрация прошла успешно
  15. .text:004046D2                 jz      short loc_4046E8
  16. ; Вывести сообщение о неправильной регистрации
  17. .text:004046D4                 push    offset aMessage ; "Message"
  18. .text:004046D9                 push    offset aWrongRegistrat
  19. ; "Wrong Registration Key"
  20. .text:004046DE                 mov     ecx, esi
  21. .text:004046E0                 call    sub_4302DE
  22. .text:004046E5                 pop     esi
Эммм... Просто сравнение двух строк, причем одна динамическая, предположим, что это введенный серийный номер, а вот вторая - чистая статика, причем указатель ведет на сегмент данных файла. Пройдя по ссылке, обнаруживаем там строку "4K5TY-UT3C2-KWP54-71MN2". То есть любой введенный серийник сравнивается с этой строкой, более того, должен ей равняться. Один серийный номер на всех возможных покупателей.

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

Ладно, пробуем повторить регистрацию с этой строкой. Программа благодарит нас за успешную регистрацию. Пробуем восстановить какой-нибудь файл, все нормально, никаких подвохов и ограничений. Автору, конечно, спасибо за полезную утилиту, но как-то странно, сделать программу такого уровня, а защиту сделать вообще никакую.

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

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

Комментарии

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

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

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

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