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

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

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

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

Строка сообщения найдена
К нашему удовольствию строка находится отдельно от названия, значит есть ненулевая вероятность, что она добавляется по какому-то условию. Тем более рядом есть не менее интересная строка "Temp Registration". Посмотрим в дизассемблере где это все используется и при каких условиях появляется.
Code (Assembler) : Убрать нумерацию
- ...
- 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