Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

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

Дата публикации: 13-10-2026 21:00:00

Скриншот программы PilotEdit
PilotEdit - серьезный текстовый редактор для работы с файлами любого размера. Он умеет открывать гигантские файлы, не съедая всю оперативную память, поддерживает любые кодировки с возможностью их смены на лету. В арсенале есть режимы колонок, HEX-редактирование, сравнение файлов и даже встроенный скриптовый движок. Инструмент мощный, но все эти радости жизни доступны в полной мере только после покупки лицензии, а триал имеет свои ограничения. Это и будем исправлять.

Основное содержимое страницы с новостью.

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

PilotEdit - серьезный текстовый редактор для работы с файлами любого размера. Он умеет открывать гигантские файлы, не съедая всю оперативную память, поддерживает любые кодировки с возможностью их смены на лету. В арсенале есть режимы колонок, HEX-редактирование, сравнение файлов и даже встроенный скриптовый движок. Инструмент мощный, но все эти радости жизни доступны в полной мере только после покупки лицензии, а триал имеет свои ограничения. Это и будем исправлять.

Если посмотреть, на офсайте есть несколько вариантов инсталляторов. Я беру последний 32-битный инсталлятор в редакции Pro. Устанавливаем, смотрим что получается. Главный исполняемый файл ничем не упакован, отправляем его на разбор в дизассемблер.

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

Сразу появляется окно с полем для серйного номера, а главное, тут используется уникальный номер HWID, который создается для каждого компьютера.

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

Вполне очевидно: без валидного серийника программа сразу же выдаст ошибку регистрации. Но это нас не останавливает, просто пропускаем окно.

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

Поищем строки, связанные с триалом, регистрацией, покупкой и тому подобное. На мой взгляд, самая заметная цель - это окно "О программе".

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

В исполняемом файле обнаруживается юникодная строка "This copy of PilotEdit is unregistered." - это именно то, что нам нужно. Теперь переходим к дизассемблеру и ищем место в листинге, где эта строка используется.

  1. .text:008DFC68                 mov     ecx, [ebp+var_88]
  2. .text:008DFC6E                 call    ?GetDlgItem@CWnd@@QBEPAV1@H@Z
  3. .text:008DFC73                 mov     ecx, eax
  4. .text:008DFC75                 call    ?SetWindowTextW@CWnd@@QAEXPB_W@Z
  5. .text:008DFC7A                 mov     [ebp+var_4], 0FFFFFFFFh
  6. .text:008DFC81                 lea     ecx, [ebp+var_3C]
  7. .text:008DFC84                 call    sub_401510
  8. .text:008DFC89                 cmp     dword_16B46A4, 0
  9. .text:008DFC90                 jnz     short loc_8DFC9A
  10. .text:008DFC92                 xor     edx, edx
  11. .text:008DFC94                 jz      loc_8DFE3A
  12. .text:008DFC9A loc_8DFC9A:
  13. .text:008DFC9A                 push    ecx
  14. .text:008DFC9B                 mov     ecx, esp
  15. .text:008DFC9D                 mov     [ebp+var_40], esp
  16. .text:008DFCA0                 push    offset aThisCopyOfPi_0
  17. .text:008DFCA5                 call    sub_401490
  18. .text:008DFCAA                 mov     [ebp+var_D4], eax
  19. ...
  20. ...
  21. .text:008DFE3A loc_8DFE3A:
  22. .text:008DFE3A                 push    ecx
  23. .text:008DFE3B                 mov     ecx, esp
  24. .text:008DFE3D                 mov     [ebp+var_60], esp
  25. .text:008DFE40                 push    offset aThisCopyOfPilo
  26. .text:008DFE45                 call    sub_401490
  27. .text:008DFE4A                 mov     [ebp+var_108], eax
  28. .text:008DFE50                 lea     edx, [ebp+var_64]

Я немного сократил листинг, оставив только самое важное. Конструкция типовая: проверка регистрации и в зависимости от результата выполняется или не выполняется условный переход, затем выводится либо строка с лицензией, либо сообщение о нелегальной копии. Разница лишь в том, что сама функция проверки тут не вызывается, она отработала где-то раньше. Здесь же просто проверяется флаг "регистрация" в переменной dword_16B46A4.

Перекрестные ссылки на указатель
Перекрестные ссылки на указатель

Теперь посмотрим перекрестные ссылки на указатель dword_16B46A4, сразу станет понятно, где меняется переменная, а где она проверяется. Обнаруживается код инициализации, все остальное - проверки. Начнем с первого же адреса 008E2046 и команды mov dword_16B46A4, 1. Это и есть инициализация. Переходим в листинге по указанному адресу: чуть выше видно начало функции sub_008E1F80 - функция проверки регистрации.

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

Патчим код
Патчим код

Как вы помните, серийники используют уникальные номера HWID. Так что для удобства просто впишем в самое начало функции проверки пару команд: MOV dword_16B46A4, 1 и RET. Тем самым инициализация всегда будет выполняться с правильным значением, независимо от железа. Сохраняем изменения, проверяем.

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

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

Поделиться ссылкой ВКонтакте

Просмотров: 555 | Комментариев: 5

Комментарии

Отзывы посетителей сайта о статье

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

Заполните форму для добавления комментария

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1CudaText 1.236.0.5011.5515-09-2026
2Plain Text Editor Review: The Simple Text Editor macOS Needs07.6425-12-2025
3Argente Drive Analyzer 1.0.0.9010.9107-09-2026
4Как заглянуть внутрь.exe, собранного через Nuitka? Новый инструмент с открытым кодом06.8721-06-2026
5sed @ Savannah: sed-4.10 released [stable]09.0222-04-2026
6pylint - 4.0.5026.6720-02-2026
7Выпуск утилиты для проверки целостности файлов Precizer 0.16.00502-07-2026
8pytest - 9.1.0016.6713-06-2026
9Релиз античит-инструментария TLAC 2.00729-06-2026

Классификация: Наука. Схожих патентов: 0. Схожих новостей: 9. Тональность: 0. Информативность: 10.62. Источник: www.manhunter.ru.