Blog. Just Blog

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

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

NoteCase Pro - компактный менеджер заметок с древовидной организацией, поддерживающий форматирование текста, вставку изображений, импорт/экспорт в популярные форматы и шифрование данных. Приложение хранит информацию локально в базе данных, что делает его удобным выбором для тех, кто ценит структуру, контроль над данными и независимость от облачных сервисов. Без лицензии NoteCase Pro работает всего месяц - как понимаете, это несерьезно. Так что и я не в игрушки тут играть собираюсь.

Забираем с офсайта дистрибутив последней версии. При установке есть несколько вариантов установки, нас интересует portable. Устанавливаем, смотрим. Исполняемый файл ничем не упакован, отправляем его на дизассемблирование.

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

При запуске программы сразу же появляется окно с предложением метнуться в кассу. Сюда еще всегда успеем, а пока поищем какие-нибудь полезные строки. Далеко ходить не пришлось - в окне находится строка "Trial".

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

В файле нашлась другая строка, "Trial mode", но она от такой же сказки, так что пусть будет она. Переходим к дизассемблеру, посмотрим, что и куда переходит. Я немного сокращу листинг, оставлю только важные куски.
  1. .text:004137FA                 call    gtk_table_attach
  2. .text:004137FF                 add     esp, 28h
  3. .text:00413802                 mov     ecx, offset byte_860398
  4. ; Функция проверка 
  5. .text:00413807                 call    sub_6D3300
  6. ; AL = результат проверки
  7. .text:0041380C                 test    al, al
  8. ; Не удалось, переходим к строке "Trial mode"
  9. .text:0041380E                 jz      loc_413A9B
  10. ; Все хорошо, лицензия подходит
  11. .text:00413814                 push    offset aRegisteredTo
  12. ; "Registered to: "
  13. .text:00413819                 push    offset aNotecase_pro
  14. ; "notecase_pro"
  15. .text:0041381E                 call    libintl_dgettext
  16. .text:00413823                 add     esp, 8
  17. .text:00413826                 lea     ecx, [ebp-0FC8h]
  18. .text:0041382C                 push    eax
  19. ...
  20. ...
  21. .text:00413A8D                 call    gtk_table_get_type
  22. .text:00413A92                 push    eax
  23. .text:00413A93                 push    dword ptr [ebp-0FF0h]
  24. .text:00413A99                 jmp     short loc_413B0A
  25. .text:00413A9B ; --------------------------------------------
  26. .text:00413A9B loc_413A9B:
  27. .text:00413A9B                 push    offset aTrialMode
  28. ; "Trial mode"
  29. .text:00413AA0                 push    offset aNotecase_pro
  30. ; "notecase_pro"
  31. .text:00413AA5                 call    libintl_dgettext
  32. .text:00413AAA                 add     esp, 8
  33. .text:00413AAD                 lea     ecx, [ebp-0FC8h]
Обычная функция проверки, условный переход, информация об успешной регистрации или сообщение о триальном режиме. Переходим к функции проверки sub_6D3300 - нам надо посмотреть, что представляет собой проверка.
  1. .text:006D3300 sub_6D3300      proc near
  2. .text:006D3300                 cmp     byte ptr [ecx+1011h], 0
  3. .text:006D3307                 jz      short loc_6D3315
  4. .text:006D3309                 cmp     byte ptr [ecx+1012h], 0
  5. .text:006D3310                 jz      short loc_6D3315
  6. ; AL = 1, проверка успешно выполнена
  7. .text:006D3312                 mov     al, 1
  8. .text:006D3314                 retn
  9. .text:006D3315 ; ----------------------------------------
  10. .text:006D3315 loc_6D3315:
  11. ; AL = 0, ошибка, регистрация не выполнена
  12. .text:006D3315                 xor     al, al
  13. .text:006D3317                 retn
  14. .text:006D3317 sub_6D3300      endp
Код здесь совсем небольшой - условный переход и результат в регистре AL. Открываем код по адресу 006D3315 и заменяем инструкцию XOR AL,AL на MOV AL,1. На всякий случай проверьте, чтобы не повредить соседний код. Длина оригинальной команды XOR AL,AL составляет 2 байта, соответственно, новая инструкция MOV AL,1 тоже займет 2 байта. Все сходится. Сохраняем изменения.

Окно "О программе"
Окно "О программе"

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

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

Комментарии

Отзывы посетителей сайта о статье
nefertum (11.04.2026 в 23:05):
ЦитатаИщу адекватную замену Notepad++

Можете посмотреть в сторону Notepad--
Найти можно на github, пользователь — cxasm
Я где-то осенью на него наткнулся, когда тоже искал замену, меня вполне устраивает.
ManHunter (06.04.2026 в 21:23):
Да, Sublime Text для души, а на работе PHPStorm, тут корпоративный стиль.
bodrox (06.04.2026 в 21:14):
А я перешёл на общестандартные md и Obsidian. Легко пересылать другим инструкции и заметки.

Кстати, ты всё так же в Sublime код и тексты пишешь? Ищу адекватную замену Notepad++, а то у его автора что-то с головой стало. Пробовал Scite, но там нет смены кодировок на лету. Нет что-то на примете уровня Notepad++? Поиском пробежался, никому не надо, похоже :).
mAv1k (06.04.2026 в 15:26):
Ловко Вы это, профессор !
Спасибо за урок <3

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

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

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