Blog. Just Blog

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

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

Программа Light Developer - очень мощный редактор графических файлов со множеством интересных функций. С его помощью можно просматривать, сортировать, обрабатывать изображения с различных цифровых устройств как одиночные, так и в пакетном режиме. Light Developer позволяет в несколько кликов улучшить качество изображений, добавить различные графические эффекты, надписи, рамки, устранить шумы, избавиться от дефектов кожи на фотографиях, эффекта "красных глаз" и многое другое. Конечно, не конкурент Adobe Photoshop, но вполне может стать очень удобным инструментом для новичков и продвинутых пользователей, особенно с русским интерфейсом. Но все положительные впечатления от программы портит необходимость выкладывать за нее деньги.

Скачиваем дистрибутив, устанавливаем. При установке есть одна важная особенность: инсталлятор автоматически распознает разрядность операционной системы и устанавливает, соответственно, 32-битную или 64-битную версию программы. В статье идет речь о 32-битной версии Light Developer. Запускаем программу, смотрим. После загрузки появляется окно с количеством оставшихся триальных дней и предложением ввести серийный номер:

Окно регистрации
Окно регистрации

На ввод неправильного серийного номера программа реагирует вот таким сообщением:

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

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

Найден файл со строкой
Найден файл со строкой

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

"badlicense"="The license key is not a correct one, please check the spell or use a copy/paste way to input it."
"invalidlicense"="This license key can not be used on current version. "
"regrestartneed"="The program need a restart to validate the license key"

Вот с этим проблем уже нет, строка легко находится в исполняемом файле:

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

Посмотрим в дизассемблере место, откуда идет ссылка на эту строку.
  1. .text:0045AFE7 loc_45AFE7:
  2. .text:0045AFE7                 push    4
  3. .text:0045AFE9                 push    3
  4. .text:0045AFEB                 push    offset aInvalidlicense ; "invalidlicense"
  5. .text:0045AFF0                 jmp     short loc_45AFFB
  6. .text:0045AFF2 ; ----------------------------------------------
  7. .text:0045AFF2
  8. .text:0045AFF2 loc_45AFF2:
  9. .text:0045AFF2                 push    4
  10. .text:0045AFF4                 push    3
  11. .text:0045AFF6                 push    offset aBadlicense ; "badlicense"
  12. .text:0045AFFB loc_45AFFB:
  13. .text:0045AFFB                 push    offset unk_62CC6C
  14. .text:0045B000                 call    sub_49B700
  15. .text:0045B005                 mov     ecx, eax
  16. .text:0045B007                 call    sub_456A00
  17. .text:0045B00C                 mov     ecx, [esp+178h+var_4]
  18. .text:0045B013                 add     esp, 8
Если судить по условным переходам, то где-то выше выполняется нужная нам проверка правильности серийного номера.
  1. ; Какая-то проверка
  2. .text:0045AF1B                 call    sub_40A0F0
  3. .text:0045AF20                 test    eax, eax
  4. ; Переход на сообщение "badlicense"
  5. .text:0045AF22                 jz      loc_45AFF2
  6. .text:0045AF28                 lea     ecx, [esp+170h+Dst]
  7. .text:0045AF2C                 push    ecx
  8. .text:0045AF2D                 call    sub_409F70
  9. .text:0045AF32                 lea     eax, [esp+170h+Dst]
  10. ; Какая-то проверка
  11. .text:0045AF36                 call    sub_40A4D0
  12. .text:0045AF3B                 test    eax, eax
  13. ; Переход на сообщение о неправильной регистрации
  14. .text:0045AF3D                 jz      loc_45AFE7
  15. .text:0045AF43                 lea     edx, [esp+170h+Src]
  16. .text:0045AF47                 push    edx
  17. .text:0045AF48                 lea     eax, [esp+174h+var_D0]
  18. .text:0045AF4F                 push    offset aRS      ; "-r %s"
Как видите, здесь две проверки. Одна проверяет корректность серийного номера, вторая похожа на проверку забаненных или устаревших серийников. Нас интересует обе эти проверки, а точнее условные переходы по адресу 0045AF22 и 0045AF3D. Заменим их на команды NOP. После перезапуска программы она принимает любой серийный номер, но сразу же закрывается. Точно так же она начинает вылетать и при любом последующем запуске. Это значит, что где-то в программе имеется проверка целостности.

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

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

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
kaktustv (14.10.2015 в 10:08):
CutOut 5 от Franzis регистрируется таким же образом.
В результате создается файл InstallFlag и такой же ключ в реестре.
Удаление или изменение чего-то одного сбрасывает регистрацию.
За урок - спасибо, очень помогло.
Евгений (18.01.2014 в 21:45):
Добрый день, всем! irokkezz, 4eshire,при сохранении файла у меня пишет: Trial и сохраняет только 1/2 файла.
irokkezz (17.01.2014 в 14:19):
4eshire, да действительно, беру свои слова обратно
4eshire (17.01.2014 в 09:37):
irokkezz, я тоже так считал... до тех пор, пока не попытался сохранить результат в Picture Enlarger.
Voffka (17.01.2014 в 03:07):
ManHunter, там кстати штук 6-7 таких проверок отталкивайся от call    sub_409F70, правда в какой именно момент они происходят, я не знаю.
irokkezz (17.01.2014 в 00:09):
4eshire, этот файл http://irokkezz.ru/downloads/f.../install.flg регистрирует все продукты Stepok Image Lab )
4eshire (16.01.2014 в 21:11):
Регистрация от Light Developer лично у меня подошла и к другой программе этой компании - Recomposit Pro, которая включает в себя также и все примочки LD. А вот как зарегить еще одну прожку,Picture Enlarger, непонятно, т.к. там в принципе нет окна для вставки серийника. Не понятно от чего отталкиваться... Может подскажет кто-нибудь? =))
ManHunter (16.01.2014 в 08:56):
AyTkACT, не только этот файл. В версии 7.5 рега заносится еще и в реестр, поэтому файл можно вообще удалить.
AyTkACT (16.01.2014 в 06:52):
Там всё дело в файле install.flg что в папке сабжа.
Именно он появляется после валидной регистрации.
Anonymous (16.01.2014 в 04:20):
Наверняка сделано так: серийник после проверки нигде не сохраняется, а в каком-нибудь файле или в реестре взводится флаг "мы_зарегистрированы"="true". Поэтому, можно сделать еще красивее - отследить этот флаг и сразу выставлять его в нужное значение, при этом даже отпадает необходимость хранить пропатченный вариант на случай переустановки системы.

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

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

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