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'им условный переход после каждой из четырех проверок. Сохраняем изменения, проверяем. Вот теперь все ограничения программы точно сняты, цель достигнута, можно сосредоточиться на коллекционировании.

Поделиться ссылкой ВКонтакте
Просмотров: 1113 | Комментариев: 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-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.06 сек. / MySQL: 2 (0.0047 сек.) / Память: 4.5 Mb
Наверх