Blog. Just Blog

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

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

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

Забираем с офсайта дистрибутив последней версии, устанавливаем, запускаем. Исполняемый файл ничем не накрыт и не упакован, что с ним надо сделать при помощи дизассемблера вы уже должны знать без напоминаний. А пока посмотрим, за что можно зацепиться.

Незарегистрированная версия
Незарегистрированная версия

В незарегистрированной версии кроме всяких триальных окон есть очень приметная строка. Это текст "Unregistered" в окне "О программе". Давайте поищем ее. Программа мультиязычная, все языковые данные хранятся в динамических библиотеках. Интересующий нас английский язык находится в файле cdm_english.dll. Откроем его в редакторе ресурсов и поищем нужную строчку.

Типы лицензий в ресурсах
Типы лицензий в ресурсах

Строка найдена. Но кроме нее рядышком находятся еще два типа лицензий, а именно "бизнес" и "персональная". Забегая вперед скажу, что персональная версия имеет некоторые ограничения по функционалу, поэтому нас интересует только максимальная Business License. Мы знаем ее индекс 2102, или он же 836h в шестнадцатеричной системе счисления. Поищем это значение в листинге. С первого же захода обнаружится следующий код:
  1. .text:00421F40                 push    esi
  2. .text:00421F41                 mov     esi, ecx
  3. ; Вызвать первую функцию проверки
  4. .text:00421F43                 call    sub_420D30
  5. ; Если она вернула EAX!=0, то программа зарегистрирована
  6. .text:00421F48                 test    eax, eax
  7. .text:00421F4A                 jz      short loc_421F7B
  8. .text:00421F4C                 mov     ecx, esi
  9. ; Вызвать вторую функцию проверки
  10. .text:00421F4E                 call    sub_421F20
  11. ; Если она вернула EAX!=0, то это бизнес-лицензия
  12. .text:00421F53                 test    eax, eax
  13. .text:00421F55                 jz      short loc_421F69
  14. ; Загрузить из ресурсов строчку "Business License"
  15. .text:00421F57                 push    836h            ; unsigned int
  16. .text:00421F5C                 lea     ecx, [esi+0E8h] ; this
  17. .text:00421F62                 call    ?LoadStringA@CString@@QAEHI@Z
  18. .text:00421F67                 pop     esi
  19. .text:00421F68                 retn
Первая функция проверки, отвечающая за наличие регистрации, выглядит как-то странно:
  1. .text:00420D30                 add     ecx, 0A9FCh
  2. .text:00420D36                 jmp     sub_4B5870
По сути это просто переходник. Открываем функцию sub_4B5870, на которую этот переходник ссылается. Целиком ее текст приводить не буду, там ничего интересного для исследования нет. Зато если посмотреть на другие перекрестные ссылки, которые ведут на эту функцию, то обнаружится много любопытного. Это манипуляции с меню, открытие триальных окон и всякое такое. И все это нехорошее выполняется при возврате из функции EAX=0. Значит просто возьмем и поможем ей возвращать правильное число. MOV EAX,1 и RET по адресу 004B5870 решают первую половину задачи.

Переходим ко второй части Марлезонского балета. Вторая функция проверки элементарная:
  1. .text:00421F20                 push    esi
  2. .text:00421F21                 mov     esi, ecx
  3. .text:00421F23                 lea     ecx, [esi+0A9FCh]
  4. .text:00421F29                 call    sub_4B5950
  5. .text:00421F2E                 mov     [esi+0E4h], eax
  6. .text:00421F34                 pop     esi
  7. .text:00421F35                 retn
Точно так же вкрячиваем в ее начало пару команд MOV EAX,1 и RET, сохраняем изменения, запускаем.

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

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

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

В меню "Unlock Software" можно даже ввести свое имя и любой регистрационный код, тогда программа поблагодарит за успешную активацию и сохранит введенные данные. Цель достигнута, спасибо автору за полезную программу и за трогательную заботу о пользователях.

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

Комментарии

Отзывы посетителей сайта о статье
TestLog (28.12.2018 в 16:35):
Прикольная программка, залип на полдня в поиске ключега, спасибо за экспонат)

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

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

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