Blog. Just Blog

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

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

Есть такая программа - ViVi Cursor от ViVi Software. Какой-то серьезной практической пользы она не представляет, но обязательно понравится любителям украшательств системы. Также будет неплохим презентом для какой-нибудь знакомой блондинки :) Смысл ViVi Cursor в том, что при перемещении к курсору добавляется цветной шлейф из различных фигурок: звездочек, цветочков, музыкальных нот, следов зверей и т.д. Анимированные картинки с примерами можно посмотреть на офсайте программы. Качаем дистрибутив, устанавливаем, запускаем. Для ознакомления с программой нам дается 10 минут, после чего придется расстаться тоже с десяткой, но на этот раз вечнозеленых рублей. Естественно, такой вариант не для нас.

Диалоговых окон в программе немного, и в About можно найти внешние признаки триальности:

Триальное окно About
Триальное окно About

В дизассемблере найдем "нехорошую" строку и посмотрим код, который на нее ссылается:
  1. ...
  2. .text:0040AD23                 mov     ebx, eax
  3. .text:0040AD25                 mov     eax, offset stru_4C520C
  4. .text:0040AD2A                 call    @__InitExceptBlockLDTC
  5. ; Вызвать процедуру проверки регистрации. На выходе AL = 0 - программа не
  6. ; зарегистрирована, AL > 0 - программа зарегистрирована
  7. .text:0040AD2F                 call    sub_401FEC
  8. .text:0040AD34                 test    al, al
  9. ; Переход на триальную ветку алгоритма
  10. .text:0040AD36                 jz      loc_40ADDF
  11. ; Вывести в About строку о полной версии программы
  12. .text:0040AD3C                 mov     [ebp+var_28], 8
  13. .text:0040AD42                 xor     edx, edx
  14. .text:0040AD44                 mov     [ebp+var_4], edx
  15. .text:0040AD47                 lea     ecx, [ebp+var_4]
  16. .text:0040AD4A                 inc     [ebp+var_1C]
  17. ; Указатель на строку "ViVi Cursor Full Version"
  18. .text:0040AD4D                 mov     eax, offset aViviCursorFull
  19. .text:0040AD52                 mov     edx, off_4CF95C
  20. ...
  21. ; Часть кода пропущена для экономии места
  22. ...
  23. .text:0040ADD3                 mov     edx, 2
  24. .text:0040ADD8                 call    sub_4BA6A8
  25. .text:0040ADDD                 jmp     short loc_40AE53
  26. ; -----------------------------------------------------------------
  27. .text:0040ADDF loc_40ADDF:
  28. ; Триальная ветка алгоритма
  29. .text:0040ADDF                 mov     [ebp+var_28], 20h
  30. .text:0040ADE5                 xor     ecx, ecx
  31. .text:0040ADE7                 mov     [ebp+var_10], ecx
  32. .text:0040ADEA                 lea     ecx, [ebp+var_10]
  33. .text:0040ADED                 inc     [ebp+var_1C]
  34. ; Указатель на строку "ViVi Cursor Trial Version"
  35. .text:0040ADF0                 mov     eax, offset aViviCursorTria
  36. .text:0040ADF5                 mov     edx, off_4CF95C
  37. ...
Процедура проверки регистрации вполне прозрачная. После нескольких промежуточных проверок, по их результатам, возвращает EAX=1 в случае успешной регистрации и EAX=0 в противном случае. Для отлома регистрации достаточно прописать в начало процедуры команды MOV AL,1; RET
  1. .text:00401FEC sub_401FEC      proc near
  2. .text:00401FEC                 push    1   ; <-- записать MOV AL,1; RET
  3. .text:00401FEE                 call    sub_40C4A4
  4. .text:00401FF3                 pop     ecx
  5. .text:00401FF4                 test    al, al
  6. .text:00401FF6                 jz      short loc_402010
  7. .text:00401FF8                 push    2
  8. .text:00401FFA                 call    sub_40C4A4
  9. .text:00401FFF                 pop     ecx
  10. .text:00402000                 test    al, al
  11. .text:00402002                 jz      short loc_402010
  12. .text:00402004                 push    3
  13. .text:00402006                 call    sub_40C4A4
  14. .text:0040200B                 pop     ecx
  15. .text:0040200C                 test    al, al
  16. .text:0040200E                 jnz     short loc_402014
  17. .text:00402010 loc_402010:
  18. ; Данные регистрации неправильные или отсутствуют. Вернуть EAX=0
  19. .text:00402010                 xor     eax, eax
  20. .text:00402012                 jmp     short locret_402019
  21. .text:00402014 loc_402014:
  22. ; Данные регистрации корректные. Вернуть EAX=1
  23. .text:00402014                 mov     eax, 1
  24. .text:00402019 locret_402019:
  25. .text:00402019                 retn
  26. .text:00402019 sub_401FEC      endp
Если посмотреть по перекрестным ссылкам откуда еще вызывается процедура проверки регистрации, то можно увидеть следуюший код:
  1. ...
  2. ; Вызвать процедуру проверки регистрации
  3. .text:004027A6                 call    sub_401FEC
  4. .text:004027AB                 xor     edx, edx
  5. .text:004027AD                 mov     dl, al
  6. .text:004027AF                 cmp     edx, 1
  7. .text:004027B2                 sbb     edx, edx
  8. .text:004027B4                 neg     edx
  9. .text:004027B6                 mov     eax, [ebx+3E8h]
  10. ; По ее результатам включить или выключить триальный 10-минутный таймер
  11. .text:004027BC                 call    @Ibutils@TIBTimer@SetEnabled$qqro_0
  12. .text:004027C1                 xor     ecx, ecx
  13. .text:004027C3                 lea     eax, [ebp+var_50]
  14. ...
А 10 минут на время работы - это и есть основное триальное ограничение программы. Значит после патча оно будет успешно нейтрализовано. Окно About тоже заметно преображается:

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

Чтобы не было абсурдной надписи "Register to Unregistered", можно найти строку "Unregistered" и заменить ее, например, на ваш ник:

Строка "Unregistered" для замены
Строка "Unregistered" для замены

Хотя можно оставить и так, пусть это будет своеобразная "фишка" релиза. Если вы собираетесь попробовать ввести левый регистрационный код и имя через меню программы, то делать этого не надо, так как после этого программа будет вылетать с ошибкой. Чтобы устранить эту ошибку, удалите файл Register.ini в папке с установленной программой. По этой же схеме снимается защита и с других продуктов ViVi Software, среди которых есть действительно полезные программы.

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

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

Комментарии

Отзывы посетителей сайта о статье
Андрей (17.05.2019 в 18:42):
name:Tutos oruguitakaty

Serial:943462150839259427891703
Ritskin (25.02.2016 в 11:55):
Благодарю)
ManHunter (25.02.2016 в 09:09):
Проделывай, я не возражаю.
Ritskin (25.02.2016 в 08:56):
Я понимаю это далекий 2009) Но уважаемый автор а сейчас можно такое проделать с этой программой?
иван (22.12.2013 в 16:35):
регестрация не помагает также 1 минуту работает и все
[RegCode]
Value=18621677218695669281112742268114545238
CheckValue=18621677218695669281112742268114545238
[RegName]
Value=Value=ManHunter / PCL
ManHunter (30.10.2013 в 23:42):
Ну можно и так.
влад (30.10.2013 в 23:41):
да нет там в папочке будет register.ini открываем через блокнот видем надписи:
[regcode]
Value=...
и
[regname]
Value=...
открываем прогу, нажимаем регистрация
в строке имя вставляем то что написано под [register name]
в строке ключ/код вставляем то что написано под [register code]
всё! по крайней мере у меня так :)
ManHunter (09.10.2012 в 12:43):
Названия программ написаны на картинках.
slava (09.10.2012 в 12:37):
Это чем так открывать, чтоб коды изменять?

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

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

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