Blog. Just Blog

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

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

Программа Light Image Resizer предназначена для массового изменения размера изображений и конвертирования их в разные форматы. Лично у меня подобная необходимость возникала всего лишь несколько раз за всю жизнь, но раз есть задача, то должен быть и инструмент. Light Image Resizer позиционируется как бесплатная программа для домашнего использования, но, как часто бывает в таких случаях, это всего лишь маркетинговая уловка.

Скачиваем дистрибутив, запускаем установку, но делаем это очень осторожно. В процессе установки нам пытаются впарить загрузчик какой-то адвары, которую антивирус успешно блокирует. Еще на фаерволе отмечается какая-то сетевая активность установщика, что тоже должно незамедлительно пресекаться. Зато все бесплатно для домашнего использования, ага.

Триальное окно при старте программы
Триальное окно при старте программы

Перед запуском программы появляется вот такое окно со счетчиком времени и предложением выложить бабло на полную версию.

Окно при выходе из программы
Окно при выходе из программы

Просто выйти из программы тоже нельзя, перед завершением работы обязательно откроется еще одно рекламное окно.

Незарегистрированная программа
Незарегистрированная программа

Ну и совсем невинным на этом фоне смотрится надпись "Незарегистрированная" в окне "О программе". С чего начать исследование? Я считаю, что лучше сделать это с поиска начального триального окна. В ресурсах оно описано как "TFRMTRIAL".

Форма триального окна в ресурсах
Форма триального окна в ресурсах

Программа написана на Дельфи, значит лучше всего для анализа подойдет IDR. Я уже несколько раз описывал в статьях работу с этим замечательным инструментом, вот и на этот раз он нам очень поможет. Впрочем, от дизассемблера тоже отказываться рано, поэтому откроем исполняемый файл и в IDR, и в IDA. В IDR на вкладке "ClassView" поиском находим все, что связано с триальным окном.

Обработчики триального окна в IDR
Обработчики триального окна в IDR

Первые четыре обработчика триального окна относятся к его кнопкам и таймеру, а вот последний, ".Execute" - это именно то, что нас интересует. Он срабатывает при создании формы. Клик на названии обработчика и мы переходим к его дизассемблированному коду.

Код обработчика триального окна в IDR
Код обработчика триального окна в IDR

В правой колонке две перекрестные ссылки на него. Первая - из секции данных, вторая - из секции кода. Клик на второй и мы попадаем на участок кода, откуда вызывается обработчик ".Execute". Я специально выделил курсором строчку, где выполняется проверка и последующий условный переход. Обратите внимание, как обозначен байт, который проверяется. Это булева переменная, да еще и обозначенная как "fTrial".

Код вызова обработчика триального окна в IDR
Код вызова обработчика триального окна в IDR

На этом с IDR закончили, переходим в дизассемблер. В нем надо открыть тот же самый участок кода, который был найден в IDR в последнем действии.
  1. .text:00E01D32                 mov     eax, off_EBF72C
  2. .text:00E01D37                 mov     eax, [eax]
  3. .text:00E01D39                 call    sub_5B086C
  4. .text:00E01D3E                 mov     eax, [ebp+var_1C]
  5. ; Проверить байт (boolean)
  6. .text:00E01D41                 cmp     byte ptr [eax+761h], 0
  7. ; Если он равен 0, то есть false, то перепрыгиваем вызов триального окна
  8. .text:00E01D48                 jz      short loc_E01D70
  9. .text:00E01D4A                 mov     eax, off_EBE9FC
  10. .text:00E01D4F                 cmp     dword ptr [eax], 0
  11. .text:00E01D52                 jz      short loc_E01D70
  12. .text:00E01D54                 call    sub_A1EB30
  13. .text:00E01D59                 mov     edx, eax
  14. .text:00E01D5B                 sar     edx, 1
  15. .text:00E01D5D                 jns     short loc_E01D62
  16. .text:00E01D5F                 adc     edx, 0
  17. .text:00E01D62 loc_E01D62:
  18. .text:00E01D62                 mov     eax, off_EBE9FC
  19. .text:00E01D67                 mov     eax, [eax]
  20. .text:00E01D69                 xor     ecx, ecx
  21. ; Открыть триальное окно
  22. .text:00E01D6B                 call    sub_D7C720
  23. .text:00E01D70 loc_E01D70:
  24. .text:00E01D70                 push    offset asc_E039FC ; "-/"
  25. .text:00E01D75                 xor     ecx, ecx
  26. .text:00E01D77                 mov     edx, offset dword_E03A10
  27. .text:00E01D7C                 mov     eax, offset off_E03A20
Самое интересное - это конструкция byte ptr [eax+761h]. Очевидно, что это какая-то структура, типа конфигурации программы, в которой записан байт, отвечающий за триальный или полный режим работы. Нам надо найти в коде, где этот байт инициализируется отличными от нуля значениями. Подобные конструкции лучше всего искать в дизассемблере по сигнатуре "+761h],". Поехали.
  1. .text:00E158B8                 call    sub_4D1AE4
  2. .text:00E158BD                 test    eax, eax
  3. .text:00E158BF                 jnz     short loc_E158D9
  4. .text:00E158C1                 cmp     dword ptr [ebp-18h], offset dword_895440
  5. .text:00E158C8                 jle     short loc_E158D9
  6. .text:00E158CA                 mov     eax, [ebp-14h]
  7. ; Программа работает в триальном режиме
  8. .text:00E158CD                 mov     byte ptr [eax+761h], 1
  9. .text:00E158D4                 jmp     loc_E159AB
  10. .text:00E158D9 ; ---------------------------------------
  11. .text:00E158D9 loc_E158D9:
  12. .text:00E158D9                 mov     eax, [ebp-14h]
  13. ; Программа зарегистрирована
  14. .text:00E158DC                 mov     byte ptr [eax+761h], 0
  15. .text:00E158E3                 lea     edx, [ebp-94h]
  16. .text:00E158E9                 mov     eax, off_EBF72C
  17. .text:00E158EE                 mov     eax, [eax]
Патчим условный переход по адресу 00E158BF, чтобы алгоритм сразу же переходил на "лицензионную" ветку. Можно было бы исправить команду mov byte ptr [eax+761h], 1 на mov byte ptr [eax+761h], 0 в триальной ветке алгоритма, но в "лицензионной" ветке выполняются еще какие-то действия. Я думаю, что в этом случае правильно будет подкорректировать именно условный переход. Едем дальше.
  1. .text:00E15989 loc_E15989:
  2. .text:00E15989                 mov     eax, [ebp-14h]
  3. ; Программа работает в триальном режиме
  4. .text:00E1598C                 mov     byte ptr [eax+761h], 1
  5. .text:00E15993                 jmp     short loc_E159AB
  6. .text:00E15995 ; ---------------------------------------
  7. .text:00E15995 loc_E15995:
  8. .text:00E15995                 mov     eax, [ebp-14h]
  9. ; Программа работает в триальном режиме
  10. .text:00E15998                 mov     byte ptr [eax+761h], 1
  11. .text:00E1599F                 jmp     short loc_E159AB
  12. .text:00E159A1 ; ---------------------------------------
  13. .text:00E159A1 loc_E159A1:
  14. .text:00E159A1                 mov     eax, [ebp-14h]
  15. ; Программа работает в триальном режиме
  16. .text:00E159A4                 mov     byte ptr [eax+761h], 1
Тут целых три блока с инициализацией триального флага, и вот их лучше пропатчить, заменив на mov byte ptr [eax+761h], 0. Больше ничего не найдено. Сохраняем изменения, запускаем программу.

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

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

ЗЫ. Да, я знаю, что в интернете есть генераторы ключей для этой программы, но за каждым из них следуют сообщения пользователей, что эти ключи после перезапуска программы слетают. Так что патч в этом случае надежнее.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 5290 | Комментариев: 20

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

Комментарии

Отзывы посетителей сайта о статье
ManHunter (03.08.2014 в 20:21):
I am not interested absolutely
Forseti (03.08.2014 в 19:46):
@ManHunter, Light Image Resizer v4.6.5.0 is out now, please patch the new version!
user (01.06.2014 в 11:48):
На офсайте сейчас версия 4.6.2.0. Хотя алгоритм тот же.
Версия 4.6.1.0, как в этой статье, с кейгеном, здесь:
_http://nemo-crack.org/soft/graphic/101959-light-image-resizer.html
ManHunter (29.05.2014 в 19:38):
Читай внимательно, все написано.
MaCTeP (29.05.2014 в 18:57):
Салют ManHunter!
Есть еще строка ее тоже нужно изменить ?
.text:00E158CD                 mov     byte ptr [eax+761h], 1
Vladimir (16.05.2014 в 18:28):
Устал ждать, пока IDA прожует exe-шник. Вырубил.
Может в этом и заключается новая тактика в защите программ: сваять код настолько устрашающего размера и с таким уровнем абстракции, чтобы у хакера руки опускались?
Андрей (12.05.2014 в 08:20):
brute, Макс! Light Image Resizer менее синтетический, чем crackme.
ManHunter (11.05.2014 в 22:44):
В моем любимом XnView тоже есть замечательная пакетная обработка, которой, собственно, и решались все мои задачи. Ресайзер тут рассматривается исключительно как жертва для исследования, а не как мегарулезная чудо-софтина, рекомендованная к использованию.
Макс (11.05.2014 в 22:38):
Да, кстати, сразу как прочитал название подумал, кому нужен этот имагрезайсер если инфравью пачками может конвертировать картинки и что хочешь делать при этом.
ManHunter (11.05.2014 в 22:17):
Что ж теперь, зачехлить отладчик и сидеть на попе ровно? :) Готовые ключи и кейгены тоже ведь не с Марса присылают, все делают такие же живые люди. А новичкам лучше учиться на простых примерах. Изучив основы, они могут самостоятельно развиваться дальше, переходить к более сложным защитам. Никто ж в первом классе интегралы не проходит, все начинают с букваря.
brute (11.05.2014 в 22:12):
для массового измененения размера\качества\типа графических файлов использую IrfanView. Много лет, бесплатно. Вообще, имхо, взлом файлов в последние годы - это игра в биссер. Сложные, типа игр, иды, с железными ключами и дорогими протекторами - не взломаешь. А к простым прогам - есть куча бесплатных аналогов, "старых" бесплатных версий этих же программ и банальных готовых ключей\сериалов\кейгенов\портабельных сборок в инете. Или даже покупка "вскадчину" нужного софта. Кроме браузера, где постоянно латаются дыры, мне софт обновлять не требовалось.. как некоторым знакомым на win8.1, где после каждого! включения система 40 минут "обновляется"..
ManHunter (11.05.2014 в 20:03):
Такие вещи должны быть уже на уровне рефлексов. Внимательно смотреть на все галочки инсталлятора любой программы.
brute (11.05.2014 в 18:00):
в следующий раз предупреждать надо, что программа трояно-спамерская-системузасирательная! Если не убрать при установке флажок "sspecial offer"..
lammer (11.05.2014 в 12:11):
У IDR есть опция генерации IDC-скрипта. Полученный скрипт импортируем в IDA и продолжаем работу в ней.
7819509 (10.05.2014 в 23:33):
AyTkACT, согласен, для полноты комплекта с официального сайта скачиваем Idr.exe и kb2010.bin файлы и заменяем их в сборке.  И ф`се... ;) sehr gut всегда с нами.
AyTkACT (10.05.2014 в 20:08):
В природе есть вариант и с некастрированным kb2.bin.
Хотя и на офсайте kb2.bin вполне годен для крисмас эдишна.
7819509 (10.05.2014 в 17:43):
Собственно оно самое, с того сайта :))

http://sendfile.su/977798

Bye!
AyTkACT (10.05.2014 в 17:17):
ManHunter, так точно. Я видимо проспал это дело, но китайцы выручили.
ManHunter (10.05.2014 в 16:18):
Были же праздничные раздачи полных баз от автора, кетайчеги тоже что-то релизили.
AyTkACT (10.05.2014 в 16:13):
IDR нахаляву даёт максимум базу знаний от 2010 делфи, а сабж на делфи 2011.

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

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

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