Blog. Just Blog

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

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

TNR Image Characterizer - простой, но при этом мощный редактор псевдографики. С его помощью можно превратить картинку в набор текстовых символов или мозаику из фигур. На офсайте можно даже получить типа бесплатный ключ на некоторое время или же прогуляться в кассу за VIP-ключом, который работает без ограничений по времени. Ни один из предложенных вариантов мне не подходит, поэтому попробуем обойтись вообще без каких-либо ключей.

Первым делом забираем с офсайта дистрибутив, устанавливаем, смотрим. Главный исполняемый файл упакован UPX. Никаких сюрпризов нет, поэтому распаковываем его штатными средствами самого пакера: upx -d Characterizer.exe и отправляем в дизассемблер.

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

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

Строка в файле
Строка в файле

Вот строка в файле, которая добавляется в заголовок главного окна. Давайте посмотрим в коде, при каких условиях она появляется.
  1. .text:0044F87F                 mov     dword ptr [ebp-4], 6Bh
  2. .text:0044F886                 movsx   edx, word_47C078
  3. .text:0044F88D                 test    edx, edx
  4. .text:0044F88F                 jz      loc_44FB56
  5. .text:0044F895                 mov     dword ptr [ebp-4], 6Ch
  6. .text:0044F89C                 lea     eax, [ebp-38h]
  7. .text:0044F89F                 push    eax
  8. .text:0044F8A0                 mov     ecx, [ebp+8]
  9. .text:0044F8A3                 mov     edx, [ecx]
  10. .text:0044F8A5                 mov     eax, [ebp+8]
  11. .text:0044F8A8                 push    eax
  12. .text:0044F8A9                 call    dword ptr [edx+50h]
  13. .text:0044F8AC                 fnclex
  14. .text:0044F8AE                 mov     [ebp-15Ch], eax
  15. .text:0044F8B4                 cmp     dword ptr [ebp-15Ch], 0
  16. .text:0044F8BB                 jge     short loc_44F8DD
  17. .text:0044F8BD                 push    50h
  18. .text:0044F8BF                 push    offset dword_40B010
  19. .text:0044F8C4                 mov     ecx, [ebp+8]
  20. .text:0044F8C7                 push    ecx
  21. .text:0044F8C8                 mov     edx, [ebp-15Ch]
  22. .text:0044F8CE                 push    edx
  23. .text:0044F8CF                 call    ds:__vbaHresultCheckObj
  24. .text:0044F8D5                 mov     [ebp-430h], eax
  25. .text:0044F8DB                 jmp     short loc_44F8E7
  26. .text:0044F8DD ; ---------------------------------------
  27. .text:0044F8DD loc_44F8DD:
  28. .text:0044F8DD                 mov     dword ptr [ebp-430h], 0
  29. .text:0044F8E7 loc_44F8E7:
  30. .text:0044F8E7                 mov     eax, [ebp-38h]
  31. .text:0044F8EA                 push    eax
  32. .text:0044F8EB                 push    offset asc_40C75C ; " - "
  33. .text:0044F8F0                 call    ds:__vbaStrCat
  34. .text:0044F8F6                 mov     edx, eax
  35. .text:0044F8F8                 lea     ecx, [ebp-3Ch]
  36. .text:0044F8FB                 call    ds:__vbaStrMove
  37. .text:0044F901                 push    eax
  38. .text:0044F902                 mov     ecx, [ebp+8]
  39. .text:0044F905                 mov     edx, [ecx]
  40. .text:0044F907                 mov     eax, [ebp+8]
Проверяется флаг word_47C078, если его значение нулевое, то выполняется условный переход через код добавления триальной надписи в заголовок окна. Значит надо узнать, где этот флаг инициализируется и какими значениями. Проще всего сделать это, посмотрев в дизассемблере перекрестные ссылки на эту ячейку памяти.

Перекрестные ссылки на ячейку памяти
Перекрестные ссылки на ячейку памяти

Как видите, в двух местах кода в флаг регистрации записывается значение 0FFFFh, в одном месте этот флаг инициализируется нужным значением, а остальное проверки и всякое подобное. Чтобы сделать регистрацию сразу со старта, заменяем обе команды mov word_47C078, 0FFFFh на команды mov word_47C078, 0 и сохраняем изменения. Запускаем программу, проверяем.

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

Триальное окно при старте пропало, надпись в заголовок окна не добавляется, ограничения по функционалу тоже пропали. Немного странновато отображается окно "О программе", но это на работу программы никак не влияет. Цель достигнута, можно идти творить красоту.

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

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

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

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

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