
Скриншот программы 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.