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


Скриншот программы TexNotes Pro

GemX TexNotes Pro - продвинутый органайзер, календарь, ежедневник, адресная книга, напоминалка, менеджер заметок и еще куча всего полезного в одной программе. Он позволяет упорядочивать и хранить фотографии, документы, статьи, контакты, а также экспортировать это все в виде независимых электронных книг. GemX TexNotes Pro станет верным другом для деловых и творческих людей. А дружба, как известно, должна быть бескорыстной, иначе это не дружба, а барыжничество.

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


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

Как заявлено на офсайте, программа не имеет других ограничений кроме времени работы. Действительно, все функции работают, только в меню "Help" добавляется ссылка на покупку программы и в окне "About" написано, что версия триальная.


Программа не зарегистрирована

Дистрибутив полной версии разработчики предоставляют только после легальной покупки. В подтверждение этому в триальной версии GemX TexNotes Pro отсутствуют какие-либо поля ввода серийного номера, формы регистрации и тому подобное. Но на всякий случай посмотрим, вдруг удастся что-то сделать с тральной версией. Для начала поищем в исполняемом файле главный признак триальности - строку "Trial".


Строка сообщения найдена

К нашему удовольствию строка находится отдельно от названия, значит есть ненулевая вероятность, что она добавляется по какому-то условию. Тем более рядом есть не менее интересная строка "Temp Registration". Посмотрим в дизассемблере где это все используется и при каких условиях появляется.
...
CODE:009EDC02                 mov     eax, ds:off_A769E0
CODE:009EDC07                 mov     eax, [eax]
CODE:009EDC09                 mov     eax, [eax+380h]
; Вызвать какую-то функцию проверки
CODE:009EDC0F                 call    sub_6EFB1C
CODE:009EDC14                 test    al, al
; Если она вернула AL=0, то программа работает в триальном режиме
CODE:009EDC16                 jnz     short loc_9EDC55
CODE:009EDC18                 lea     ecx, [ebp+var_C]
CODE:009EDC1B                 mov     edx, offset aTrial ; "Trial"
CODE:009EDC20                 mov     eax, 2BCh
CODE:009EDC25                 call    sub_A51E94
CODE:009EDC2A                 mov     ecx, [ebp+var_C]
CODE:009EDC2D                 lea     eax, [ebp+var_8]
CODE:009EDC30                 mov     edx, offset aTexnotesPro4_3
; "TexNotes Pro 4.3 "
CODE:009EDC35                 call    sub_404FF8
CODE:009EDC3A                 mov     edx, [ebp+var_8]
CODE:009EDC3D                 lea     eax, [ebp+var_4]
CODE:009EDC40                 call    sub_405670
CODE:009EDC45                 mov     edx, [ebp+var_4]
CODE:009EDC48                 mov     eax, [ebx+324h]
CODE:009EDC4E                 call    sub_528ABC
CODE:009EDC53                 jmp     short loc_9EDC90
CODE:009EDC55 ; ------------------------------------------
CODE:009EDC55 loc_9EDC55:
CODE:009EDC55                 lea     ecx, [ebp+var_18]
CODE:009EDC58                 mov     edx, offset aTempRegistrati
; "Temp Registration"
CODE:009EDC5D                 mov     eax, 2BDh
CODE:009EDC62                 call    sub_A51E94
CODE:009EDC67                 mov     ecx, [ebp+var_18]
CODE:009EDC6A                 lea     eax, [ebp+var_14]
CODE:009EDC6D                 mov     edx, offset aTexnotesPro4_3
; "TexNotes Pro 4.3 "
CODE:009EDC72                 call    sub_404FF8
CODE:009EDC77                 mov     edx, [ebp+var_14]
CODE:009EDC7A                 lea     eax, [ebp+var_10]
CODE:009EDC7D                 call    sub_405670

Все просто и наглядно. Вызывается функция по адресу 006EFB1C, если она вернула в регистре AL что-то отличное от нулевого значения, то программа считается "временно зарегистрированной" (дословный перевод строки "Temp Registration"), если AL=0, то программа переводится в триальный режим. Ну а раз отсутствует функция регистрации, то кейгенить тут изначально нечего, значит воспользуемся старым добрым патчем. Записываем пару команд MOV AL,1 и RET по адресу 006EFB1C, сохраним изменения и посмотрим что получилось.


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

Триальное сообщение при запуске программы пропало, так же как и пункт меню о покупке, а в окне "About" триальная версия сменилась на зарегистрированную, пусть и временно. Все равно это "временное" в результате патча будет "постоянным". Для очистки совести можно поиграться с системным временем, например, переведя его на год вперед. Программа продолжает работать без каких-либо ограничений. Вот так вы совершенно бескорыстно обрели верного друга в лице этого органайзера :) Похожим способом обходится защита и некоторых других программ от GemX.
Теги:
защита, взлом
Добавлено: 16 Сентября 2013 04:32:11 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...