Blog. Just Blog

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

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

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

Забираем с офсайта дистрибутив, устанавливаем, запускаем и смотрим на предмет триальных проявлений. Ограничения на 30-дневный срок использования разработчики вроде как убрали, и на том спасибо. Зато осталось ограничение на добавление новых элементов в коллекцию. Отправляем главный исполняемый файл в дизассемблер.

Окно для ввода серийного номера
Окно для ввода серийного номера

В окне регистрации присутствует надпись о демо-версии. Программа мультиязычная, строка находится в языковых файлах под индексом LABEL_TITLE_DEMO. А вот место в коде, где она используется.
  1. .text:004F5086                 dec     [ebp+var_150]
  2. .text:004F508C                 lea     eax, [ebp+var_30]
  3. .text:004F508F                 mov     edx, 2
  4. .text:004F5094                 call    sub_AD5FB4
  5. ; Проверить флаг регистрации
  6. .text:004F5099                 cmp     dword_B0E54C, 0
  7. ; Программа зарегистрирована
  8. .text:004F50A0                 jz      loc_4F51AB
  9. .text:004F50A6                 mov     [ebp+var_15C], 38h
  10. .text:004F50AF                 mov     edx, offset unk_B1C84A
  11. .text:004F50B4                 lea     eax, [ebp+var_48]
  12. .text:004F50B7                 call    sub_AD5D1C
  13. .text:004F50BC                 inc     [ebp+var_150]
  14. .text:004F50C2                 push    dword ptr [eax]
  15. .text:004F50C4                 lea     eax, [ebp+var_4C]
  16. .text:004F50C7                 call    sub_439758
  17. .text:004F50CC                 push    eax
  18. .text:004F50CD                 inc     [ebp+var_150]
  19. ; Вывести на форму сообщение о демо-режиме
  20. .text:004F50D3                 mov     edx, offset aLabel_title_de
  21. ; "LABEL_TITLE_DEMO"
  22. .text:004F50D8                 lea     eax, [ebp+var_44]
  23. .text:004F50DB                 call    sub_AD5D1C
  24. .text:004F50E0                 inc     [ebp+var_150]
  25. .text:004F50E6                 push    dword ptr [eax]
То есть проверяется значение переменной dword_B0E54C, если оно нулевое, то надпись в окне регистрации меняется на зарегистрированную, иначе выводится текст про демо-режим. Давайте посмотрим на эту переменную.
  1. .data:00B0E54C dword_B0E54C    dd 1
Она сразу же прописана в программе со значением 1, то есть демо-режим. Несложно догадаться, что где-то выполняется проверка лицензии и в случае соответствия этот флаг сбрасывается. Но никто же нам не запрещает сбросить его сразу в файле. Открываем файл в hex-редакторе и меняем значение флага на 0. Сохраняем изменения, проверяем.

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

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

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

Ага, вот и дополнительная проверка. При попытке добавить новую коллекцию или новый элемент в уже существующую, появляется сообщение "Activation check failed!". Возвращаемся в дизассемблерный листинг и ищем это сообщение. Обнаружатся четыре вхождения примерно одного вида:
  1. .text:004512C0                 cmp     dword_B0E54C, 0
  2. .text:004512C7                 jz      loc_45248F
  3. ...
  4. ...
  5. .text:0045248F loc_45248F:
  6. .text:0045248F                 push    0
  7. .text:00452491                 mov     edx, offset aActivationChec
  8. ; "Activation check failed!"
  9. .text:00452496                 mov     eax, off_BA75F0
  10. .text:0045249B                 mov     eax, [eax]
  11. .text:0045249D                 xor     ecx, ecx
  12. .text:0045249F                 call    sub_AD5C70
NOP'им условный переход после каждой из четырех проверок. Сохраняем изменения, проверяем. Вот теперь все ограничения программы точно сняты, цель достигнута, можно сосредоточиться на коллекционировании.

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

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

Комментарии

Отзывы посетителей сайта о статье
Федя (30.11.2021 в 23:25):
Хороший почин )))
Vnv (27.11.2021 в 15:06):
ManHunter, бугага :)
Чукча - не читатель, чукча - комментатор.
ManHunter (26.11.2021 в 20:24):
Статью не читай @ комментарии оставляй
... (26.11.2021 в 20:20):
На офф-сайте:
Что нового Снято ограничение на 30-дневное использование

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

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

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