Blog. Just Blog

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

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

Visual Subst - это простая и эффективная утилита для создания и управления виртуальными дисками на основе локальных папок с помощью встроенной команды Windows subst. Программа решает несколько ключевых задач, делая работу с виртуальными дисками максимально удобной и функциональной. Но за денежку обеспечит идеальный выбор для разработчиков, системных администраторов и всех, кто часто работает с файлами и директориями.

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

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

Индекс этой строки в ресурсах равен 35813 (или 8BE5h в шестнадцатеричной системе). Это значение было найдено в листинге кода, что позволило локализовать функцию проверки.
  1. .text:0040638C                 mov     [ebp+var_4], 0FFFFFFFFh
  2. .text:00406393                 call    sub_402BA0
  3. .text:00406398                 jmp     loc_406618
  4. .text:0040639D ; ----------------------------------------------
  5. .text:0040639D loc_40639D:
  6. .text:0040639D                 mov     edi, 1
  7. .text:004063A2                 jmp     loc_406618
  8. .text:004063A7 ; ----------------------------------------------
  9. .text:004063A7 loc_4063A7:
  10. .text:004063A7                 call    sub_44F140
  11. .text:004063AC                 push    0
  12. ; Строка текста "The product key is not valid!"
  13. .text:004063AE                 push    8BE5h
  14. .text:004063B3                 lea     ecx, [ebp+var_AC]
  15. .text:004063B9                 mov     edx, [eax]
  16. .text:004063BB                 push    ecx
  17. .text:004063BC                 mov     ecx, eax
  18. .text:004063BE                 mov     eax, [edx+4]
  19. .text:004063C1                 call    eax
  20. .text:004063C3                 push    0               ; int
  21. .text:004063C5                 push    10h             ; uType
Анализ показал, что вызов проверки происходит внутри функции sub_406090. После ее вызова результат проверяется командой test al, al, и если он нулевой - программа переходит на вывод ошибки. Чтобы обойти защиту, достаточно всегда возвращать истинное значение.
  1. .text:004061C1                 push    eax             ; int
  2. .text:004061C2                 lea     eax, [ebp+var_AC]
  3. .text:004061C8                 push    eax             ; int
  4. ; Функция проверки
  5. .text:004061C9                 call    sub_407A90
  6. .text:004061CE                 add     esp, 8
  7. .text:004061D1                 test    al, al
  8. ; Вызвать функцию перехода
  9. .text:004061D3                 jz      loc_4063A7
  10. .text:004061D9                 push    0
  11. .text:004061DB                 call    sub_40F690
  12. .text:004061E0                 push    1               ; char
  13. .text:004061E2                 push    dword ptr [esi+0ACh] ; int
  14. .text:004061E8                 mov     ecx, offset dword_6AE050
  15. .text:004061ED                 push    dword ptr [esi+0A8h] ; lpData
  16. .text:004061F3                 call    sub_40EC80
  17. .text:004061F8                 test    eax, eax
Для этого в начало функции по адресу 00407A90 были внесены изменения: добавлены две инструкции - MOV EAX, 1 и RET. Это заставляет программу считать любой введенный ключ корректным. Изменения сохранили, программа успешно запустилась с любыми данными в качестве регистрационных.

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

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

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

Комментарии

Отзывы посетителей сайта о статье
ManHunter (04.07.2025 в 15:16):
Софтина делается такой, чтобы люди сами захотели деньги за свою программу, вот в этом и защита. А не лепить очередную говнозащиту на свое кривое говноподелие.
Артём (04.07.2025 в 14:38):
kaktustv, Хороший продукт должен быть защищён более изощрённо. Вставили бы тогда ключи активации в сам код, что бы вообще никто не парился.
kaktustv (04.07.2025 в 10:27):
Ценность этого разбора еще и в том, что, как минимум, еще 2 программы того же разработчика исправляются аналогично. Спасибо за идею, мастер!
ManHunter (03.07.2025 в 10:27):
Да у ntwind программы вообще очень достойные, который год пользуюсь.
kaktustv (03.07.2025 в 10:12):
ЦитатаСовсем обленились.

Не ругайте таких разработчиков, скажите им спасибо.
Без таких нам жилось бы гораздо хуже.
Артём (02.07.2025 в 21:26):
Да уж... Совсем обленились.

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

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

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