Blog. Just Blog

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

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

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

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

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

Давайте поищем в файле текст этого сообщения. Найдется юникодная строка:

Строка сообщения в файле
Строка сообщения в файле

Идем в дизассемблер. Посмотрим внимательно на код, где используется эта строка, а также определим условия ее появления.
  1. .text:00413048                 lea     edx, [esp+6D4h+psz]
  2. .text:0041304F                 lea     ecx, [esp+6D4h+WideCharStr]
  3. ; Вызвать функцию проверки
  4. .text:00413056                 call    sub_4162F0
  5. ; Если она вернула значение больше -1, то регистрация прошла успешно
  6. .text:0041305B                 cmp     eax, 0FFFFFFFFh
  7. .text:0041305E                 jg      short loc_413085
  8. .text:00413060 loc_413060:
  9. .text:00413060                 mov     ecx, [edi+8]
  10. .text:00413063                 push    10h
  11. .text:00413065                 push    offset aTruePaste ; "True Paste"
  12. .text:0041306A                 push    0               ; LPCWSTR
  13. .text:0041306C                 push    offset aAppname ; "appname"
  14. .text:00413071                 call    sub_424E20
  15. .text:00413076                 push    eax
  16. .text:00413077                 push    offset aSorryTheLicens
  17. ; "Sorry, the license key is incorrect. Pl"...
  18. .text:0041307C                 push    0
  19. .text:0041307E                 push    offset aXui_str_licerr
  20. ; "XUI_STR_LICERROR"
  21. .text:00413083                 jmp     short loc_4130E1
  22. .text:00413085 ; -----------------------------------
  23. .text:00413085 loc_413085:
  24. .text:00413085                 lea     edx, [esp+6D4h+psz] ; psz
  25. .text:0041308C                 lea     ecx, [esp+6D4h+WideCharStr] ; psz
  26. .text:00413093                 call    sub_416260
  27. .text:00413098                 mov     ecx, [edi+8]
  28. .text:0041309B                 test    eax, eax
  29. .text:0041309D                 jz      short loc_4130C1
  30. .text:0041309F                 push    40h
  31. .text:004130A1                 push    offset aTruePaste ; "True Paste"
  32. .text:004130A6                 push    0               ; LPCWSTR
  33. .text:004130A8                 push    offset aAppname ; "appname"
  34. .text:004130AD                 call    sub_424E20
  35. .text:004130B2                 push    eax
  36. .text:004130B3                 push    offset aTheLicenseKe_0
  37. ; "The license key is accepted and saved.\"...
  38. .text:004130B8                 push    0
  39. .text:004130BA                 push    offset aXui_str_licacc
  40. ; "XUI_STR_LICACCEPTED"
  41. .text:004130BF                 jmp     short loc_4130E1
Все очень наглядно. Вызывается функция проверки, если ее результат больше -1, то регистрация считается успешной и выводится сообщение с благодарностью. Что нужно сделать, чтобы регистрация всегда считалась корректной? Надо купить лицензию. Правильно, надо подменить результат проверки. Как мы выяснили из вышеприведенного кода, значение, возвращенное в регистре EAX, должно быть от нуля и выше. Прописываем по адресу 004162F0 пару команд MOV EAX,0 и RET. Сохраняем изменения.

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

Теперь при попытке регистрации программа принимает любой серийный номер и любое регистрационное имя. В окне "О программе" отображается персональная лицензия. А что если прописать не MOV EAX,0, а MOV EAX,1 или 2 или даже 3? В зависимости от значения будет меняться лицензия, максимальной корпоративной лицензии соответствует значение 3. Вот его и оставим.

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

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

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

Комментарии

Отзывы посетителей сайта о статье
ManHunter (30.01.2019 в 10:51):
Мдя.. Хотя казалось бы, что там такого ракетно-космического, что не взлетело бы на WinXP.
user (29.01.2019 в 18:06):
Нет. Там импортируются новые библиотеки.

.. походу дела, эта софтина изначально делалась в 2013-м году
каким-то , который и не знает, как надо.
Нашёл вот только что версию 1.0 - тоже заявлена как "для Windows 7".
ManHunter (29.01.2019 в 17:53):
Патч в заголовке PE не помогает?
user (29.01.2019 в 17:52):
И ещё что мне очень не понравилось
- что программа скомпилирована для OS/SUBSYS = 6/6.
То есть Vista+.
Ложится в архив короче, мёртвым грузом
user (28.01.2019 в 20:37):
Кхм..
Статья будет неполной, если не упомянуть,
что под 64-битной Виндой автоматически инсталлируется и 64-битная же версия программы,
которая, по аналогии с описанной методикой, патчится следующим образом:

;----------------file truePaste_x64.CRK
TruePaste 2.1 (x64)

Set registered
truepaste.exe
00017241: 89 31
00017242: 74 C0
00017243: 24 B0
00017244: 20 03
00017245: 57 C3
;-----------------end of CRK-file

;;.. блин, так руки и не дошли научить крякер работать с х64 PE-EXE ..
ManHunter (25.01.2019 в 08:57):
brute, это именно так и работает. А регистрация чисто для галочки.
brute (25.01.2019 в 08:01):
имхо, лучше патчить так, чтобы программа на любом компе чувствовала себя лицензионной без дополнительной регистрации на каждой машине.

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

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

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